指针数组与数组指针------C++学习笔记

问题来源:在动态分配内存中,动态创建多维数组时,比如说new int[3][4][5],那么我们的new操作符返回的是指向新分配内存空间首地址的指针,然而这个指针不是int型的指针,而是int数组的指针,这个int数组元素个数为(除去最左边第一维外各维下标表达式的乘积)<----(C++程序设计第四版 清华出版社)。

也就是可以这样:

int (*p)[4][5];
p=new int[3][4][5];
但是下面这样是不可以的:

int *p;
p=new int[3][4][5];

针对上面返回int数组指针到结尾这就话,我们以new int[3][4][5]为例,返回的int型数组的指针,其数组元素个数为20个,所以写成(*p)[4][5]是显而易见的,那么能否写成(*p)[5][4]的形式呢,是不是只要元素个数对应就可以呢?还是每一维的个数都要对应呢?我们再VS2010下做测试。



从结果我们可以看出不仅数组元素的个数要对应,维数也是要对应的。

指针数组:

int *p[3];//一维指针数组,每个元素都是指向int型的指针
int *p[3][4];//二维指针数组,每个元素都是指向int型的指针??

数组的指针:

int a[3];//一维数组
int aa[3][4];//二维数组
int aaa[3][4][5];//三维数组
int *p=a;//一维数组的指针
int (*pp)[4]=aa;//二维数组的指针
int (*ppp)[4][5]=aaa;//三维数组的指针

  用指针访问素组元素的格式如下:一维:*(p+i);二维:*(*(pp+i)+j);三维:*(*(*(ppp+i)+j)+k),依次类推。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值