1

假设我们正在使用 Objective-C

    NSDate *now = [NSDate date];
    NSLog(@"The new date lives at %p", now);
    NSLog(@"The new date lives also at %p", &now);

NSLogs 会吐出不同的内存地址,这让我很困惑。NSLogs 之一现在告诉我对象的地址,但是哪一个呢?一个给出指针的地址,另一个给出对象的地址?

谢谢

4

2 回答 2

2

你说的对。第一条日志消息向您显示 NSDate 对象本身的地址,该地址应该在某个动态内存中(“在堆上”)。第二行是指针变量“now”的地址,在这种情况下,它是一个局部变量,应该在堆栈上。

因此,您在堆栈上有一个名为now. now是一个指针,该now变量的值是您的 NSDate 的内存地址。

于 2013-03-08T03:17:09.830 回答
0

这是指针和指针的指针之间的区别。

于 2013-03-08T03:28:05.460 回答