V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MrVito
V2EX  ›  问与答

关于取数组名的地址,我有一点疑惑(c++)

  •  
  •   MrVito · 2018-06-29 20:03:20 +08:00 via Android · 1907 次点击
    这是一个创建于 2343 天前的主题,其中的信息可能已经有所发展或是发生改变。

    int a[5] &a 为什么不是一个指向指针的指针呢 a 是 a[0]的地址,就是说 a 是一个指向 int 的指针?请 V 友们解答一下,困扰我 2 小时了......

    10 条回复    2018-06-30 09:26:16 +08:00
    CEBBCAT
        1
    CEBBCAT  
       2018-06-29 20:19:34 +08:00
    没看懂,似乎有点语义不同,注意断句
    CEBBCAT
        2
    CEBBCAT  
       2018-06-29 20:19:49 +08:00
    @CEBBCAT #1 不同 -> 不通
    CEBBCAT
        3
    CEBBCAT  
       2018-06-29 20:37:24 +08:00
    你可能需要这个:[C 语言 数组名不是首地址指针
    ]( https://www.cnblogs.com/liqiuhao/p/7737539.html)

    搜索过程:


    @Livid 请问在有可能支持 ![]() 中使用 data:image/png;base64,…… 而非 https://…… 吗?(我知道暂时只能够在主题帖中使用 Markdown )
    ruimz
        4
    ruimz  
       2018-06-29 20:45:06 +08:00 via Android
    int a[5] 的情况下,&a 的返回值是指向指针的指针。。。但&a 他是一个表达式,肯定不是变量呀
    Monad
        5
    Monad  
       2018-06-29 20:51:05 +08:00
    因为 a 的类型是 int[5] 只是可以退化成 int*
    ruimz
        6
    ruimz  
       2018-06-29 21:00:37 +08:00 via Android
    @ruimz 我是一个没学到编译的…
    感觉 3 楼发的很有道理
    解决了我一些关于数组指针的原理问题。
    还是不要看我了
    lance6716
        7
    lance6716  
       2018-06-29 21:02:34 +08:00 via Android
    int i; &&&&&&i 根本没有意义
    xfcy
        8
    xfcy  
       2018-06-29 21:07:39 +08:00 via Android
    我记得《 C 专家编程》中有提到这个问题,楼主不妨去查查看。
    msg7086
        9
    msg7086  
       2018-06-30 02:11:36 +08:00
    如果 a 是数组,那么&a 就是 a 的地址。打印&a 和 a 的结果是相同的。
    然后 a+1 是加一个元素长度( 4 字节),而&a+1 是加整整一个数组的长度( 20 字节),他们的类型还是有区别的。
    700388
        10
    700388  
       2018-06-30 09:26:16 +08:00
    楼主的意思是想要 a[5] 的地址吧,c++确实不支持数组 下面子地址访问。因为没必要。 数组的单个变量地址,拿来干什么?根本没用,所以 c++之所以给数组的整体地址,便于传值和修改,而不给子地址。
    要想访问 int &b=a[5]; 这样就可以看到子地址。实际并无用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3270 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:40 · PVG 20:40 · LAX 04:40 · JFK 07:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.