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]
,一个指向五个整数数组的指针。
我已经阅读了一些关于此类型声明的内容。 声明是:
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]
,一个指向五个整数数组的指针。