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は異なるメモリアドレスを吐き出し、それは私を混乱させます。NSLogの1つがオブジェクトのアドレスを教えてくれますが、どれですか?1つはポインタのアドレスを示し、もう1つはオブジェクトのアドレスを示していますか?

ありがとうございました

4

2 に答える 2

2

あなたが正しいです。最初のログ メッセージは、NSDate オブジェクト自体のアドレスを示しています。これは動的メモリのどこか (「ヒープ上」) にあります。2 行目は、ポインター変数 'now' のアドレスです。この場合、これはローカル変数であり、スタック上にある必要があります。

したがって、スタック上に というローカル変数がありますnownowはポインタであり、そのnow変数の値は NSDate のメモリ アドレスです。

于 2013-03-08T03:17:09.830 に答える
0

ポインターとポインターのポインターの違いです。

于 2013-03-08T03:28:05.460 に答える