gcc コンパイラを使用して次の C プログラムを実行しようとしています。
#include <stdio.h>
int main()
{
int *a[] = {1,2,3,4,5,6};
printf("\narr0=%d\n", *a);
printf("arr1=%d\n", *(a+1));
printf("arr2=%d\n", *a+2);
printf("arr3=%d\n", *a+3);
printf("arr4=%d\n", *a+4);
return 0;
}
Output:-
arr0=1
arr1=2
arr2=9
arr3=13
arr4=17
*a+2、*a+3、*a+4 の括弧をスキップすると何が起こっているのか理解できません。*a+2 の場合、次のように操作します。
= *a+2
= *a+(4*2) 4 ->Size of int
= 1+(8)
So, *a+2 = 9
他の人にとっても同じです。
しかし、私は次のような出力を期待しています。(?)
arr0=1
arr1=2
arr2=3
arr3=4
arr4=5
私がポインターの配列を宣言した方法は、それを行うには良い方法ではありません。
ここで何が起こっているのか誰でも説明できますか?