几年后我再次潜入C。根据我找到的其他答案,我认为以下两个打印语句会评估为相同的输出;但是,情况似乎并非如此。
int main()
{
int** arr = malloc(
3 * sizeof(int*)
);
for(int y = 0; y < 3; y++) {
int* subarr = malloc(
3 * sizeof(int)
);
for(int x = 0; x < 3; x++) {
subarr[x] = y * 3 + x + 1;
}
arr[y] = subarr;
}
printf("%d\n", *(&arr[0][0]) + 3);
printf("%d\n", (&arr[0][0])[3]);
}
谁能解释这里发生了什么/我错过了什么?