定义定常数组类型
一、声明方式
typedef int(ARRAY_TYPE)[10];
定义新类型ARRAT_TYPE,ARRAT_TYPE是10大小的int*数组指针类型。
typedef int(*ARRAY_POINTER_TYPE)[10];
定义新类型ARRAY_POINTER_TYPE,ARRAY_POINTER_TYPE是10大小的int**数组指针类型。
二、定义
int a[10];
ARRAY_TYPE *p1 = &a;
ARRAY_POINTER_TYPE p2 = &a;
注意:这里&a;a的大小必须和之前typedef int(ARRAY_TYPE)[10];的大小一致为10;否则会报错
三、使用
int(*p3)[10] = &arr; //定义p3类型(10个int大小)
int i=0;
for(i=0;i<10;i++)
{
*(*(p3+i)) = 10+i;
printf("%d\n",**(p3+i));
}
注意:访问双重指针可以看我的上一篇:访问结构体数组的四种方法https://blog.csdn.net/qq_43900551/article/details/109957004
四、整体代码
#include<stdio.h>
int main()
{
typedef int(ARRAY_TYPE)[10];
typedef int(*ARRAY_POINTER_TYPE)[10];
int arr[10];
int arr2[11];
ARRAY_TYPE *p1 = &arr;
ARRAY_POINTER_TYPE p2 = &arr;
// 报错
//p2 = &arr2; 编译器认为不是同一种类型
int(*p3)[10] = &arr;
int i=0;
for(i=0;i<10;i++)
{
*(*(p3+i)) = 10+i;
printf("%d\n",**(p3+i));
}
return 0;
}