• C语言---二维数组&&指针


    1.int a[3][4] = {0};

    ----------------------------------------
    printf("%d\n",sizeof(a));

    12元素,12*4=48字节;

    -------------------------------------
    printf("%d\n",sizeof(a[0][0]));

    一个元素,4字节;

    ------------------------------------
    printf("%d\n",sizeof(a[0]));

    a[0]是第一行数组的数组名,第一行的大小,4元素,4*4=16字节;

    ---------------------------------------------
    printf("%d\n",sizeof(a[0]+1));

    第1行的第2个元素地址,4/8字节;

    ----------------------------------------------
    printf("%d\n",sizeof(*(a[0]+1)));

    表示第1行的第2个元素,整形4字节;

    ------------------------------------------------
    printf("%d\n",sizeof(a+1));

    跳过一行,指向第二行,指向第二行首个元素地址,是4/8;

    ---------------------------------------------
    printf("%d\n",sizeof(*(a+1)));

    等价于a[1],即第二行数组名,放在sizeof里面求第二行数组大小,16字节;

    第二行地址,数组指针解引用,计算第二行数组大小;

    -----------------------------------------------------------
    printf("%d\n",sizeof(&a[0]+1));

    第一行地址加上1表示第2行地址,4/8字节;

    --------------------------------------------------------
    printf("%d\n",sizeof(*(&a[0]+1)));

    第二行大小,4元素,16字节;

    ----------------------------------------------------------
    printf("%d\n",sizeof(*a));

    a是第1行的地址,解引用是第一行的大小,16字节;

    *a--->*(a+0)-->a[0]也可以理解;

    ------------------------------------------------------------
    printf("%d\n",sizeof(a[3]));

    越界的,大小16字节,和a[0],a[1]的类型是相同的,不会访问内存,只关注类型;

    类如:

    b+2=6short类型赋值给a的int类型,结果就是类型,大小是4;

    a并没有被复赋值,还是2,因为sizeof里面的内容不会真正的执行,编译的时候就已经确定了;

  • 相关阅读:
    如何通过经纬度坐标获取附近的地址信息?
    Mysql8的优化(DBA)
    1206. 设计跳表 : 数据结构实现题
    Spring系列:基于XML的方式构建IOC
    Spring Boot 实现定时任务
    微软S2C2F框架已被OpenSSF开源安全体系采用
    Linux搭建elasticsearch-7.8.0单机版本
    Docker 入门篇(一)-- 简介与安装教程(Windows和Linux)
    【linux】shell编程 脚本语法
    猿创征文|瑞吉外卖——移动端_笔记
  • 原文地址:https://blog.csdn.net/binhyun/article/details/136193182