【发布时间】:2014-11-10 13:26:55
【问题描述】:
我有这个代码 - http://ideone.com/wslBnj
#include <stdio.h>
int main(void) {
int array[2][3] = {5,10,15,20,25,30};
int (*ptr)[2][3] = &array; // line 1
printf("%d\n",***ptr);
printf("%d\n",*(*ptr)[1]);// line 2
printf("%d\n",(*ptr)[1][2]);
return 0;
}
我不理解“第 1 行”的 LHS(左侧)语法。它是什么意思(用文字)?
我不明白“第 2 行”中给出的优先级。我的意思是,输出可能是(*(*ptr))[1] 这个分组,但它是这个*((*ptr)[1])。这是为什么?
有人可以详细解释这两个疑问吗?我无法理解在互联网上搜索此问题的搜索词。这就是我直接在这里问的原因。
【问题讨论】:
-
可能会有所帮助,至少对于部分疑问:cdecl.org
-
这一行:int array[2][3] = {5,10,15,20,25,30};写得不好,因为行/列结果是实现定义的。而是使用:int array[2][3] = {{5,10,15},{20,25,30}};