您的当前位置:首页正文

C++ 指针数组

来源:九壹网

如果一个数组的每个元素都是指针变量,这个数组就是指针数组。指针数组的每个元素都必须是同一类型的指针。

1.一维指针数组

声明一维指针数组的语法形式:

数据类型*数组名[下标表达式];
int *p[3]

声明了一个int类型的指针数组p,其中有3个元素,每个元素都是指向int类型数据的指针。

由于指针数组的每一个元素都是一个指针,必须先赋值在引用,因此声明数组后,对指针元素赋初值是必不可少的。

【例】利用指针数组输出一个3行3列单位矩阵
单位矩阵是主对角线元素为1,其余元素为0的矩阵。

int main()
{
	int a[3] = { 1,0,0 };//定义数组,矩阵第一行
	int b[3] = { 0,1,0 };//定义数组,矩阵第二行
	int c[3] = { 0,0,1 };//定义数组,矩阵第三行
	int* p[3] = { a,b,c };//定义整型指针数组并初始化
	for (int i = 0; i < 3; i++)//对指针数组元素循环
	{
		for (int j = 0; j < 3; j++)//对矩阵每一行进行循环
		{
			cout << p[i][j]<<" ";
			//cout << *(p[i]+j)<<" ";
			
		}
		cout << endl;
	}

	return 0;
}

运行结果:

2.指针数组与二维数组的区别
int arr[3][3]={{1,2,3},{2,3,4},{3,4,5}};

尽管指针数组与二维数组存在本质上的差异,但二者具有相同的访问形式,可以把二维数组当作指针数组来访问。

【例】二维数组举例

int main()
{
	int arr[3][3] = { {1,2,3},{2,3,4},{3,4,5} };
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << *(*(arr+i)+j) << "  ";//逐个输出二维数组第i行的元素
		}
		cout << endl;
	}
	return 0;
}

运行结果:

*(*(arr+i)+j)

这就是arr数组的第i行j列元素,对应使用下标表示的arr[i][j]

因篇幅问题不能全部显示,请点此查看更多更全内容

Top