&iとiif iis 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なぜですか?&ii