FromHiphop 2021-10-01 17:42 采纳率: 50%
浏览 20

对数组名取地址,为什么不能赋给指针?

如下为代码

int arr[10] = {0};
int *p1 = arr;        //合法
int *p2 = &arr;     //不合法
int (*p3)[10] = &arr  //合法

p3是指向带有10个int元素的数组的指针,本质上是个指针,但对他初始化只能用数组取地址
然而p2不能用数组取地址来初始化。
我尝试输出相关地址寻找答案。

    cout << "p1的值:" << p1 << endl;
    cout << "p2的值:" << p2 << endl;
    cout << "arr的值:" << arr << endl;
    cout << "&arr的值" << &arr << endl;

输出如下:

img


显然,arr和&arr所指的地址完全相同,按道理应该都可以赋值给指针的啊。

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2021-10-01 17:45
    关注

    arr是数组,于是数组的首地址,相当于指针
    &arr是数组的指针,首地址的地址

    评论

报告相同问题?

问题事件

  • 创建了问题 10月1日

悬赏问题

  • ¥100 CubeIDE更换芯片以及调整代码
  • ¥50 有没有可以远程指导问题
  • ¥15 origin柱状图,分组如何分
  • ¥15 两个不同IP互通的配置命令
  • ¥15 office弹窗激活问题
  • ¥15 明阳风电1.5s,风机重启后报出振动开关触发,无法复位求解。
  • ¥20 ankidroid软件兼容性问题
  • ¥15 请教合适的模型做回归
  • ¥15 stm32cubemx生成代码后利用printf输出浮点数卡死。
  • ¥15 关于#windows#的问题:我是想本地生成pdf的标签文件然后扔给其他的电脑打印,是修改pdf打印格式打印出来这个pdf给那边打印,还是说有其他办法可以生成文件给人家打印