c中int(* pt)[5]的含义是什么?

时间:2015-01-07 03:31:36

标签: c arrays pointers

我已经阅读了有关此类型声明的内容。 声明是:

int (*arr)[5];

我对这种类型的声明有点困惑。实际上这个声明是什么意思,我们什么时候使用它。

3 个答案:

答案 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],一个包含五个整数的数组,因此
  • arrint (*)[5],是指向五个整数数组的指针。