2d数组元素与其指针(带有索引)的内存地址之间的关系

时间:2018-12-27 19:19:04

标签: c pointers multidimensional-array memory-address

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],如果000000010000000A[0][0]=1变成&p[0][0]

每次编译时此结果保持不变,因此我认为这不是随机行为。
谁能告诉我这背后的关系是什么?还是仅取决于编译器? 我用000000010000001

编译了代码

0 个答案:

没有答案