• C++数组与指针回顾总结


     1 //数组名是常量指针,
     2     //a指向数组首元素,指针步长为数组元素大小,&a同样也指向数组首地址,指针步长为数组大小,如下: 4     //a+1 是相对数组起始地址偏移了sizeof(int)字节
     5     //&a+1 是相对于数组起始地址偏移了sizeof(a)字节
     6     int a[] = { 1, 3, 2, 4 };
     7     cout << *a << *(a + 1) << *(a + 2) << *(a + 3) << endl; //1324
     8     
     9 
    10     cout << a << " " << &a << endl; //两地址相同
    11     cout << &a + 1 << "," << &a + 2 << endl; //0048FBB8,0048FBC8,刚好差了16字节
    12 
    13     auto ta = a; //这个方式有趣,只能用这种方式原样使用数组
    14     cout << ta[0] << ta[1] << ta[2] << ta[3] << endl; //1324
    15 
    16     //向上取址,正确方式
    17     int b = 10;
    18     int* p = &b;
    19     int** pp = &p; //
    20     int*** ppp = &pp;
    21     int**** pppp = &ppp;
    22 
    23     //向上取址,错误方式
    24     int** ppt = &(&b); //&b是常量地址,&(&b)是对常量取址,错误行为,只有变量能取址
    25     
    26     
    27     //定义一个指向 int[4]类型的指针pa,注意,数组元素个数必须相等,不能是 int(*pa)[2] = &a;
    28     int(*pa)[4] = &a;
    29 
    30     //同理,可以先定义一个int (*)[4]类型,再用它定义变量
    31     typedef int(*Arr4Ptr)[4]; //声明类型
    32     Arr4Ptr px = &a; //定义变量
    33 
    34     //数组内存是连续的吗?
    35     //答案:数组的一级元素在内存中都是连续存放的,示例如下:
    36 
    37     int iarr1[6]; //内存连续
    38     int iarr2[6]; //内存连续
    39     int iarr3[6]; //内存连续
    40     float farr[3]; //内存连续
    41 
    42     int* arrptrs[3];
    43 
    44     arrptrs[0] = iarr1;;
    45     arrptrs[1] = iarr2;
    46     arrptrs[2] = iarr3;
    47 
    48     //一级元素共3个,每个都是类型为 int*的指针,它们在内存中是连续存放的:
    49     //002CF994,002CF998,002CF99C
    50     cout << &(arrptrs[0]) << "," << &(arrptrs[1]) << "," << &(arrptrs[2]) << endl;
    51 
    52     //二级元素iarr1,iarr2, iarr3明显是不连续存放的,因为它们是三个不相关的普通变量
    53     cout << iarr1 << "," << iarr2 << "," << iarr3 << endl;

    参考:https://www.cnblogs.com/nosadness/p/4369937.html

  • 相关阅读:
    js 变速动画函数
    js 获取滚动条事件
    js 获取任意一个元素的任意一个样式属性的值
    js 三大事件(鼠标.键盘.浏览器)
    关于数组的一些方法
    mvc获取时间戳
    html5响应式设置<meta>
    jq遍历url判断是否为当前页面然后给导航上色
    mvc正则@符号js报错解决办法
    无法在提交表单前通过ajax验证解决办法
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/8444250.html
Copyright © 2020-2023  润新知