zoukankan      html  css  js  c++  java
  • 16、a和&a有什么区别?

    int main() {
    int a[10] = {1,2,3,4,5};
    int (*p)[10] = &a;
    int* q = a;
    cout << *(a + 1) << endl; // 输出2
    cout << (*p)[1]<< endl; // 输出2
    cout << q[1]; // 输出2
    return 0;
    }

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

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

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

  • 相关阅读:
    元类、orm
    MySQL进阶
    python操作mysql
    tf矩阵基础
    tensorflow安装时遇到的问题
    Loading
    弹球落地
    3dMenu
    响应式布局:flex
    渐变linear-gradient
  • 原文地址:https://www.cnblogs.com/crbhf/p/14906712.html
Copyright © 2011-2022 走看看