c中的int(*pt)[5]是什么意思

What is the meaning of int (*pt)[5] in c

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

int (*arr)[5];

我对这种类型有点困惑declaration.Actually这个声明的含义是什么,我们什么时候使用它。

表示arr是一个指向5个整数数组的指针。与不太容易混淆的五个指针数组进行比较:

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)[i] 是一个 int,其中 i <= 5,因此
  • *arr 是一个 int[5],五个整数的数组,因此
  • arr 是一个 int (*)[5],一个指向五个整数数组的指针。