怎么用指针操作二维数组
本人第一次发博客,请大家多多指教
我们都知道一维数组的我们都很熟悉:
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("}");
}声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
