多维数组与指针

来源:互联网 发布:手机如何开淘宝网店 编辑:程序博客网 时间:2024/05/17 06:06

1.指向数组元素的指针变量

实例代码:

#include<iostream>using namespace std;int main(){int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int *p;for(p=a[0];p<a[0]+12;p++){cout<<*p<<" ";}cout<<endl;return 0;} 

p=a[0]等价于p=&a[0][0],而不可以使p=a。因为,a指向的是a[0](二维数组的首行,即指向一个一维数组);而a[0]是指向a[0][0](即二维数组中的第一个元素)

#include<iostream>using namespace std;int main(){int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int *p;for(p=&a[0][0];p<a[0]+12;p++){cout<<*p<<" ";}cout<<endl;return 0;} 


2.指向由m个元素组成的一维数组的指针变量

我们可以定义一个指针变量,它不指向一个整型变量,而是指向一个包含m个元素的一维数组。


int (*p)[4]表示p是一个指针变量,它指向包含4个整形元素的一位数组


int (* p)[4]=& a[0]等价于 int (* p)[4]=a

即,使p指向a[0],则p+1不是指向a[0][1],而是指向a[1],p的增值以一位数组的长度为单位。

#include<iostream>using namespace std;int main(){int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int (*p)[4];int i,j;p=a;for(i=0;i<3;i++){for(j=0;j<4;j++){    cout<<*(*(p+i)+j)<<" ";}}cout<<endl;return 0;} 

其中*(*(p+i)+j)就等价于p[i][j];

#include<iostream>using namespace std;int main(){int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int (*p)[4];int i,j;p=&a[0];for(i=0;i<3;i++){for(j=0;j<4;j++){    cout<<p[i][j]<<" ";}}cout<<endl;return 0;

原创粉丝点击