&i
とi
if i
is arrayの違いを確認するコードを試しました。私の仮定は、それが配列の開始アドレスを表していることであり、同様i
に印刷するとどうなるかわかりませんでした。とが配列の開始アドレスだったので&i
、結果は (私にとって) 驚くべきものでした。i
&i
#include<stdio.h>
int main()
{
char str[25] = "IndiaBIX";
int i[] = {1,2,3,4};
printf("%i\n", &i);
printf("%i\n", i);
return 0;
}
結果は次のようになります。
2686692
2686692
これは同じアドレスです。
しかし、int へのポインターを使用する場合:
#include<stdio.h>
#include <stdlib.h>
int main()
{
int *j = (int *) malloc(sizeof(int));
*j = 12;
printf("%i %i %i\n", *j,j,&j);
return 0;
}
結果は次のようになります。
12
5582744
2686748
ここで、1 番目は が指すメモリ領域の値j
、2 番目は が指すメモリ領域のアドレスj
、3 番目はポインタ自体のメモリ アドレスであると仮定します。と を出力するi
と、がポインタのメモリ アドレスを意味しないのは&i
なぜですか?&i
i