指针数组,数组指针,数组引用

好久不用C++,今天遇到数组指针又迷糊了,感觉复习一波并记录下来

数组引用

定义一个4x3的数组:

int arr[4][3] = { 0,11,22,33,44,55,66,77,88,1,2,3 };

定义对数组的引用:ref是一个大小为3的数组,是对a[0]的引用;

int(&ref)[3] = arr[0];

在这里插入图片描述
若想对整个arr引用,在定义引用时则创建二维数组:

int(&ref)[4][3] = arr;

指针数组&数组指针

指针数组
指针数组比较简单,定义方式为

int arr[4][3] = { 0,11,22,33,44,55,66,77,88,1,2,3 };
int* p1[4];

从右往左看,首先他是一个大小为4的数组,再往前看他存放的是int类型的指针,这样就比较好理解

for (int i=0;i<4;i++)
{
	p1[i] = arr[i]+1;
	cout << *p1[i]<< endl;
}

将arr数组的每一行的第2个元素的地址赋值到p1,然后输出
在这里插入图片描述

数组指针
数组指针的定义和函数指针的定义相似

int(*p2)[3];

从内往外看,先看括号里他是一个指针,观察右边发现他是指向一个大小为10的数组,往左看,数组中的元素为int,p2就是指向一个大小为3的int型数组的指针。

赋值时把数组的地址传给指针:

p2 = &arr[0];

这里arr[0]和&arr[0]的值是一样的,但是需要传的是&arr[0],arr[0]是数组第一个元素的地址,而&arr[0]是第一个数组的地址。
在这里插入图片描述
*p2得到的是数组的首地址,之后可以按照数组的访问方式读取数组元素。

还可以通过p2访问到数组的其他元素
让p2指向二维数组的第2个数组

p2 = &arr[1];

在这里插入图片描述
p2[-1]指向第一个数组,p2[1]指向第三个数组,p2[2]指向第四个数组。其实利用的还是数组的连续性。

猜你喜欢

转载自blog.csdn.net/qq_38094489/article/details/84315102