我在KN King的书第269页遇到了这个声明。
int a[ROWS][COLS], (*p)[COLS];
p = &a[0];
p
现在指向2维数组的第一行。我明白为什么a [0]
指向2维数组的第一行。但我不理解声明p
的语法。那是什么意思,我怎么记得住它?
围绕*p
的括号是什么意思?(* p)
在运算符优先级方面意味着什么?
cols
个元素的数组的指针。将其提取出来并像* p(一个指针)一样进行分析,然后是一个数组声明(* p)[]
,然后是每个元素类型int
。数组大小为cols
。现在,由于编辑parn围绕p的括号使其被声明为指向某物的指针,而不是int指针的数组。 - Koushik Shetty[]
会在*
之前绑定。int *p[COLS]
是指针数组,int (*p)[COLS]
是指向数组的指针。 - Carl Norum