說我們是在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現在告訴我該對象的地址,但哪一個?一個是給出指針的地址,另一個是給出對象的地址?
謝謝
說我們是在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現在告訴我該對象的地址,但哪一個?一個是給出指針的地址,另一個是給出對象的地址?
謝謝
你是對的。第一條日誌消息顯示了NSDate對象本身的地址,它應該位於某處(「在堆上」)的動態內存中。第二行是你的指針變量'now'的地址,在這種情況下它是一個局部變量,並且應該在堆棧中。
所以你在棧上有一個局部變量now
。 now
是一個指針,其now
變量的值是您的NSDate的內存地址。
這是指針和指針指針之間的區別。
不,這是地址和該地址的地址之間的差異。 – 2013-03-08 03:37:49
:),這就是我的意思,讓他以同樣的方式思考。 – junkor 2013-03-08 04:49:06