一、类型层面
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]。