Objective-C中指针指向的地址和指针所在的地址

看代码:

- (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个字节

你可能感兴趣的:(Objective-C中指针指向的地址和指针所在的地址)