数组指针与指针数组

首先,指针本身就是只存储的一个地址,所以用指针来new数组时,我们只需要把数组的首地址给指针就行了。

int *p = new int[3];

通过指针访问数组:

p[1] = 2333;
std::cout << p[1] << std::endl; // 2333
std::cout << *(p + 1) << std::endl; // 2333

二维数组写法:

int(*map)[3] = new int[3][3]();

这样子就是数组指针-顾名思义-指向数组的指针即为数组指针
因为[]的优先级比*高,所以不打括号()就会变成了指针数组

指针数组-指向指针的数组-就是数组里面存的全是指针
就是一个数组里面存着很多地址,这每一个地址都可以指向另一个数组,这样就可以创造不等长的二维数组

int *p2[3];
for (size_t i = 0; i < 3; i++) {
p2[i] = new int[4];
p2[i][0] = 666;
p2[i][1] = 666;
}
std::cout << p2[0][0] << std::endl; // 666
//指向p[0][0]
std::cout << *(p2)[0] << std::endl; // 666
//指向p[1][0]
std::cout << *(p2 + 1)[0] << std::endl; // 666
//指向p[0][1]
std::cout << *(*p2 + 1) << std::endl; // 666
//指向p[1][1]
std::cout << *(*(p2 + 1) + 1) << std::endl; // 666
//指向p[1][1]
std::cout << *(p2[1] + 1) << std::endl; // 666

下面是图片格式
数组指针与指针数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值