我已经阅读了有关此类型声明的内容。 声明是:
int (*arr)[5];
我对这种类型的声明有点困惑。实际上这个声明是什么意思,我们什么时候使用它。
答案 0 :(得分:3)
int *arr[5]
arr
是5个指针的数组
int (*arr)[5]
arr
是一个指向5个整数元素
检查以下代码:
int a[5] = { 1,2,3,4,5};
int (*arr)[5] = &a;
printf("%d",(*arr)[2]);
现在可以像
一样访问数组元素 (*arr)[i]
不是*arr[i]
答案 1 :(得分:2)
这意味着arr
是一个指向5个整数数组的指针。与五个指针中较少混淆的数组进行比较:
int* arr[5];
这就是你需要括号的原因。
答案 2 :(得分:2)
根据“声明跟随使用”规则:
(*arr)[i]
是int
,其中i <= 5
,因此*arr
是一个int[5]
,一个包含五个整数的数组,因此arr
是int (*)[5]
,是指向五个整数数组的指针。