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

来源:互联网 发布:sjf算法 编辑:程序博客网 时间:2024/04/28 14:19

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)[n]的地址分配情况:


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

二维数组:

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];//不等于a[4]的4,不合法

int (*p)[4];//等于a[4]的4,合法
int a[4] = { 5, 6, 7, 8 };

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

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

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[n]的区别:

文章链接:http://blog.csdn.net/chen1083376511/article/details/78386419

阅读全文
0 0