2

次のコードがあります。

int arr[2][2][2]={10,3,4,5,6,7,8,9};
int *p;
printf("%u",arr);
p=(int *)arr;
printf("%u",p);

どの出力

64166
64164

しかし、私はそれを考えて、同じメモリアドレスparr指します。異なるアドレスが表示されるのはなぜですか?

4

2 に答える 2

2

でも同じコード

 #include <stdio.h>

    int main()
    {

         int arr[2][2][2]={10,3,4,5,6,7,8,9};
         int *p;
         printf("\n%u",arr);
         p=(int *)arr;
         printf("\n%u\n",p);
         return 0;
    }

同じ結果しか得られません。

ここに画像の説明を入力

于 2012-07-27T13:06:14.110 に答える
2

コードを見てみましょう

 int *p;
 printf("%u",p);

p は、初期化された int ポインターです。メモリにあるものは何でも印刷します。

 p=(int *)arr;
 printf("%u",p);

p は現在、メモリ内の配列のアドレスを指しており、そのアドレスを出力します。

于 2012-07-27T12:28:06.157 に答える