怎么用指针操作二维数组
本人第一次发博客,请大家多多指教
我们都知道一维数组的我们都很熟悉:
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("}"); }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C语言输入与输出
- 下一篇: window上php扩展文件下载