c 中int(* pt)的含义是什么

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

int (*arr)[5]; 

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

 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]

这意味着arr是一个指向5个整数数组的指针。 与五指针中较少混淆的数组相比:

 int* arr[5]; 

这就是你需要括号的原因。

根据“声明遵循使用”规则:

  • (*arr)[i]是一个int ,因此i <= 5
  • *arr是一个int[5] ,因此是一个由五个整数组成的数组
  • arr是一个int (*)[5] ,一个指向五个整数数组的指针。