您的位置:首页 > 其它

int (*p)[3]指向由整型数据组成的数组的指针

2017-10-29 08:18 274 查看
int (*p)[]和二维数组使用

int map[2][3] = { { 10, 20, 30 }, { 40, 50, 60 } };
int(*p)[3] = map;
p++;//指向map[1][0]~map[1][2]的数组段的地址
cout <<"**p(因为前面p++)是map[1][0]的内容值:"<< **p << endl;//map[1][0]
cout <<"*p是map[1][0]的地址值:"<< *p << endl;
cout << "*p+1是map[1][1]的地址值:" << *p + 1 << endl;
cout << "*(*p + 1)是"<<*(*p + 1) << endl;//因为前面p++,所以一直指向第二个数组段,这里指第二个数组段的第二个元素

打印结果:






int (*p)
的地址分配情况:







int (*p)
在一维数组和二维数组注意:


二维数组:

int map[2][3] = { { 10, 20, 30 }, { 40, 50, 60 } };
int(*p)[1] = map;//小于map[2]的2,不合法


int(*p)[2] = map;//等于map[2]的2,合法


int (*p)[3]=map;//大于map[2]的2,合法

*************************************************

一维数组:

int(*p)[3];//不等于a[4]的4,不合法

int (*p)[5];//[b]不等于a[4]的4,不合法[/b]

int (*p)[4];//[b]等于a[4]的4,合法

int a[4] = { 5, 6, 7, 8 };[/b]

原因:int (*p)
是数组指针,表示x行n列(x是不确定数)的数组的指针,也就是说:表示行指针,所指一行有n个元素。


int (*p)
与一维数组运用:


int(*p)[4];
int a[4] = { 5,66, 123, 589 };
p = &a;
cout << "p的值:" << p << endl; //注意,p不等于p[0]
cout << "p[0]是a的地址:" << p[0] << " a的地址:" << &a << endl;
cout << "a[0]的内容:" << *(p[0]) <<endl;
cout << "a[1]的内容:" << *(p[0]+1) << endl;
打印结果:





关于与int *p
的区别:


文章链接:http://blog.csdn.net/chen1083376511/article/details/78386419
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针