page contents

a和&a有什么区别?

轩辕小不懂 发布于 2021-12-30 15:05
阅读 847
收藏 0
分类:C/C++开发
  • c
  • c++
  • 2780
    Nen
    Nen
    - 程序员

    假设数组int a[10]; int (*p)[10] = &a;其中:

    a是数组名,是数组首元素地址,+1表示地址值加上一个int类型的大小,如果a的值是0x00000001,加1操作后变为0x00000005。*(a + 1) =

    a[1]。

    &a是数组的指针,其类型为int (*)[10](就是前面提到的数组指针),其加1时,系统会认为是数组首地址加上整个数组的偏移(10个int型变

    量),值为数组a尾元素后一个元素的地址。

    若(int *)p ,此时输出 *p时,其值为a[0]的值,因为被转为int *类型,解引用时按照int类型大小来读取。

    请先 登录 后评论