看代码:
- (void)test
{
NSObject *obj = [NSObject new];
NSLog(@"指针指向的地址:%p", obj);
NSLog(@"指针所在的地址:%p", &obj);
NSLog(@"指针所在的地址:%x", (unsigned int)&obj);
NSLog(@"obj end");
NSObject *obj2 = self;
NSLog(@"指针指向的地址:%p", self);
NSLog(@"指针指向的地址:%p", obj2);
NSLog(@"指针所在的地址:%p", &obj2);
NSLog(@"指针所在的地址:%x", (unsigned int)&obj2);
NSLog(@"obj2 end");
int a = 10;
NSLog(@"指针所在的地址:%p", &a);
}
输出结果:
指针指向的地址:0x60000001d3d0
指针所在的地址:0x7ffee798c768
指针所在的地址:e798c768
obj end
指针指向的地址:0x60000001d370
指针指向的地址:0x60000001d370
指针所在的地址:0x7ffee798c760
指针所在的地址:e798c760
obj2 end
指针所在的地址:0x7ffee798c75c
从几个指针所在的地址也可以验证:
- 栈内存是从高向低的
- 指针占用了8个字节
- int占用了4个字节