一、类型层面
int (*)[3]
:它属于一种指针类型。具体而言,这是一个指向包含3个int类型元素的数组的指针。可以把它看作是对一类指针的抽象定义,就像int代表整数类型一样,int (*)[3]代表指向指向特定数组的指针类型。int (*arr_ptr)[3]
:这是一个变量声明。这里的arr_ptr是一个变量名,其类型为int (*)[3],也就是说arr_ptr是一个指向包含3个int类型元素的数组的指针。
二、代码示例及解释
#include <stdio.h>int main(void){//定义一个包含3个int类型元素的数组int arr[3] = {1, 2, 3};//定义一个指向包含3个int类型元素的数组的指针int (*arr_ptr)[3];//将arr的地址赋值给arr_ptrarr_ptr = &arr;// 打印数组元素for (int i = 0; i < 3; i++) {printf("%d ", (*arr_ptr)[i]);}printf("\n");return 0; }
三、代码解释
int (*)[3]
的体现:在代码里,arr_ptr
的类型就是 int (*)[3]
,不过这里并没有直接使用 int (*)[3]
这个类型去做别的操作,它主要是用来明确 arr_ptr
这个变量的类型。int (*arr_ptr)[3]
的体现:int (*arr_ptr)[3]
是对 arr_ptr
变量的声明。之后通过 arr_ptr = &arr;
把数组 arr
的地址赋给 arr_ptr
,如此 arr_ptr
就指向了数组 arr
。- 访问数组元素:借助
(*arr_ptr)[i]
这种方式能够访问数组 arr
里的元素。*arr_ptr
会把 arr_ptr
解引用得到它所指向的数组,然后通过 [i]
来访问数组中的第 i
个元素。
四、总结
int (*)[3]
单纯是一种类型定义,代表指向包含 3 个 int
类型元素的数组的指针类型。int (*arr_ptr)[3]
是一个变量声明,创建了一个名为 arr_ptr
的变量,其类型为 int (*)[3]
。