假设我们正在使用Objective-C
NSDate *now = [NSDate date];
NSLog(@"The new date lives at %p", now);
NSLog(@"The new date lives also at %p", &now);
NSLogs将吐出不同的内存地址,这让我感到困惑。其中一个NSLog现在告诉我对象的地址,但是哪个?一个给出指针的地址,另一个给出对象的地址?
谢谢
答案 0 :(得分:2)
你是对的。第一条日志消息显示NSDate对象本身的地址,该地址应位于某处的动态内存中("在堆上#34;)。第二行是指针变量' now'的地址,在这种情况下是一个局部变量,应该在堆栈上。
因此,堆栈上有一个名为now
的局部变量。 now
是一个指针,该now
变量的值是NSDate的内存地址。
答案 1 :(得分:0)
它是指针和指针指针之间的区别。