牛骨文教育服务平台(让学习变的简单)
博文笔记

怎么用指针操作二维数组

创建时间:2017-05-10 投稿人: 浏览次数:1171

本人第一次发博客,请大家多多指教害羞

我们都知道一维数组的我们都很熟悉:

int a[5] = { 1,2,3,4,5 };
int*p = a;
int i, j;

这里p指针是int型指针,这里的赋值是将数组a的内存中的首地址啊a【0】在内存中的位置,地址传给p,这样p就能代表a数组了

这时我们可以用平p【1】,p【2】……依次代表数组a【1】,a【2】……;

接下来我们看二维数组,

int b[2][3] = { 1,2,3,21,22,23};
int* p2 = b[0];
这里p2指针是int型指针,这里的赋值是将数组b在内存中的首地址(b【0】【0】在内存中的位置,地址)传给p2,这样p2中的值就是b【0】【0】的地址。
此时我们有// p2[0] =  b[0][0] ,p2[1] =  b[0][1] ,p2[2] =  b[0][2]

         // p2[3] =  b[1][0] ,p2[4] =  b[0][1] ,p2[5] =  b[0][2]
但对于操作时尽量要指针操作和数组本身操作要分开来

接下来是对于这两种操作的一小段代码:

#include<cstdio>
#include<cstdlib>

using namespace std;

int main()
{
	int i,j;
	int a[2][3]={{1,2,3},{4,5,6}};//定义一个二维数组a
	int b[2][3]={1,2,3,4,5,6};//定义一个二维数组b
	int s[2][3];//声明一个二维数组 s用来存放两个数组的和
	int *p,*q,*su;//声明三个int类型的指针 用来指向三个二维数组
//*****下边是分别指向*****	
	p=a[0];
	q=b[0];
	su=s[0];
	int sum;
//******用指针来操作二维数组******
	for(i=0;i<6;i++)
	{
	    sum=p[i]+q[i];
		su[i]=sum;
	}
//******用数组本身来操作二维数组******
	printf("the sum of the arrays is 
{");
	for(i=0;i<2;i++)
		{
			for(j=0;j<3;j++)
			   {
				   printf("%d ",s[i][j]);
			   }
			printf("
");
		}
	printf("}");
}






声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。