int main(){
int n[2][3]={10,20,30,40,50,60};
int(*p)[3];
p=n;
cout<<p[0]<<endl;
}
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
为什么c++下面的指针数组中cout<<p[0];出来的是地址而cout<<p[0][0];则出来的是具体的值呢?再问一下p=n这句话是可以自动将一维的指针数组p变为二维的吗?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-cpp_learner 2021-08-06 14:45关注
我补充一下吧!
p确实是数组指针。
1.
int(*p)[3]; 为什么要写[3]呢?
因为这样定义才能标识这个p数组指针可以指向二位数组n;
你可以这样理解,我们定义二维数组时,可以不指定行,但一定要指定列,例如:int arr[][3];
所以数组指针也是一样的道理,定义数组指针时必须指定列数。
列数相同的数组指针才能指向列数相同的二维数组。2.
p[0]相当于n[0][0]的地址
p[1]相当于n[1][0]的地址
p[0]、p[1]表示的是数组每行的首地址
所以你想找到某个数值,必须指定到位,例如p[0][0]表示第一个数,* ( * ( p + 0 ) + 0)这样貌似表示的也是第一个数(有点忘记这种用法了), * (p[0])貌似表示的也是第一个数。3.
p=n
指针数组p指向二维数组n的首地址。本回答被专家选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 excel中的填充效果 对应poi的哪个对象啊
- ¥20 急需求一个 手机抓包app支付链接脚本
- ¥15 byte[]转String后值为[object Object]
- ¥20 STM32 AD7734
- ¥15 mmrotate官方的test工具死循环
- ¥15 isolar-AB软件安装后打开出错
- ¥15 如何让usb软件在电脑拔插无记录
- ¥15 ecology9的待办推送外部系统
- ¥15 Mplus跑出来的数据只有原数据的一半
- ¥15 vue项目添加全局处理解决一些开发问题