当我遇到这个代码片段时,我正在用 C 练习内存分配问题:
int a[3][4] = {{7,3,5,6},{1,10,23,18},{64,45,92,85}};
int(*p)[4] = a;
printf("%d ",(*(*p + (9 - 2 * 3 + 1)) + 2));
答案原来是 8 但 8 不存在于整个数组中。 谁能解释一下这里发生了什么?
是的,我得到了答案。 事实证明 p 首先被取消引用,然后将 2 添加到它。所以 p 指向 6 并被取消引用并且 6+2 = 8.