定义数组指针的三种方法

1)通过数据类型定义数组指针:

 typedef int(ArrayType)[5];  int *a ArrayType* pointer;

2) 声明一个数组指针类型

 typedef int (*MyPointer)[5];

 MyPointer myPoint;

3)直接定义:

  type (*pointer)[n];   

pointer 为数组指针变量名  type 为指向的数组数据类型 

n  为指向的数组的大小

注意这个地方是type类型(比如 int (*pointer)[10])

 //定义数组指针变量的第一种方法
 int main12()
 {
	 typedef int (myArr)[5];//定义一个数据类型 数组数据类型
	 myArr myArr1;// int myArr1[5] 
	 myArr *pArray;//定义一个指针变量 这个指针变量指向一个数组
	 int i;

	 {
		 int a ;
		 int *p = NULL;
		 p = &a;

	 }
	 {
		
		 for (i=0;i<5;i++)
		 {
			 myArr1[i] = i+1;
		 }
		 pArray = &myArr1;
		 for (i=0;i<5;i++)
		 {
			 printf("(*pArray)[%d]:%d\n",i,(*pArray)[i]);
		 }
	 }
	 
	 system("pause");
	 return 0;
 }
 //定义数组指针变量的第二种方法
 
 int main13()
 {
	typedef int (*PMyArr)[5];//定义一个数据类型 数组指针类型
	
	PMyArr pArray;//告诉编译器分配一个指针变量 

	int c[5];
	int i;

	pArray = &c;

	for (i=0;i<5;i++)
	{
		(*pArray)[i] = i+1;
	}

	for (i=0;i<5;i++)
	{
		printf("%d\n",(*pArray)[i]);
	}
	system("pause");
	return 0;
 }

 //定义数组指针变量的第三种方法
 //前两种方法通过数据类型定义变量 比较麻烦

 int main()
 {
	 int (*PMyArr)[5];//直接定义一个 数组指针变量 

	 int c[5];
	 int i;

	 PMyArr = &c;

	 for (i=0;i<5;i++)
	 {
		 (*PMyArr)[i] = i+1;
	 }

	 for (i=0;i<5;i++)
	 {
		 printf("%d\n",(*PMyArr)[i]);
	 }
	 system("pause");
	 return 0;
 }


### 使用 `typedef` 定义数组指针 在C语言中,可以利用 `typedef` 关键字简化复杂的数据类型的声明方式。对于数组指针而言,这意味着可以通过创建一个新的类型名来表示指向特定大小数组指针。 #### 声明指向一维数组指针类型 当希望定义一个能够指向含有固定数量元素的一维整型数组指针时,语法如下所示: ```c typedef int (*IntArrayPtr)[5]; ``` 这里的关键在于圆括号的位置——它们确保星号绑定到标识符而非类型上,从而形成的是一个指向数组指针而不是数组本身[^1]。 #### 创建并初始化此类指针变量 一旦有了上述自定义类型之后,在实际编程过程中就可以像下面这样轻松地实例化该种类型的对象,并对其进行赋值操作: ```c int main() { int myArray[5] = {1, 2, 3, 4, 5}; IntArrayPtr ptrToArray; ptrToArray = &myArray; // 访问第一个元素的方式之一 printf("First element via pointer to array: %d\n", (*ptrToArray)[0]); } ``` 这段代码展示了如何通过新定义的 `IntArrayPtr` 类型声明了一个名为 `ptrToArray` 的指针变量,并将其设置为指向已存在的 `myArray` 数组;最后还给出了访问所指向数组内某个具体位置的方法[^2]。 #### 处理更复杂的多维情况 如果目标是指向更为复杂的二维或多维结构,则只需要调整方括号内的尺寸参数即可实现相应的需求。例如,要定义一个能指向具有两行五列整形数据表项的指针可写作: ```c typedef int (*IntMatrixPtr)[2][5]; // 或者针对更高维度的情况... typedef float (*FloatCubePtr)[3][4][7]; ``` 这些例子说明了即使面对更加错综复杂的内存布局模式,依然可以用相对直观的方式来表达和管理相应的指针关系[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值