int A[2][4] = {{99, 1, 2, 3}, {10, 11, 12, 13}};
int **p;
p = (int **)A;
我有一个2D数组A
和一个指针p
的指针。
然后我将&A [0] [0]和&p [0] [0]
printf("%p\n", &A[0][0]); //000000000061fe20
printf("%p\n", &p[0][0]); //0000000100000063
令人印象深刻。 但是当我用不同的值启动A时:
int A[2][4] = {{0, 1, 2, 3}, {10, 11, 12, 13}};
{{1}的值变成&p[0][0]
,如果000000010000000
则A[0][0]=1
变成&p[0][0]
。
每次编译时此结果保持不变,因此我认为这不是随机行为。
谁能告诉我这背后的关系是什么?还是仅取决于编译器?
我用000000010000001