• C语言——问题总结


    1、指针数组与数组指针的区别

    指针数组        int *p[5];         每一个元素就是一个指针,多用于二级指针

    数组指针        int (*p)[5];      每个元素地址表示就是一个一维数组的首地址。多用于二维数组

    2、结构体与共用体的大小计算      

    结构体总大小 % 最大的位置偏移 == 0,如果不为0则补齐,struct内存对齐与取消内存对齐: 

    struct A{
        int a;    //4     0  % 4 = 0
        char b;   //1     4  % 1 =0   
        double c; //8     5  % 8 =5  +3  4+1+8+3 = 16
        short d;  //2     16 % 2 =0  =18 
                          18 % 4 =2  +2  = 20内存对齐 
    };                 //结构体的总大小 % 最大的位置偏移 == 0 

    structB{
        int a;       //4
        char b;      //1
        double c;    //8
        short d;     //2  
    }__attribute__((__packed__));  //取消内存对齐 = 15

    共用体则是        最大的成员对应的内存

    3、数组与结构体的区别

    结构体类型的变量是由多个单一数据类型的变量组合在一起的,在使用的时候, 可以对结构体内部的单一数据类型变量单独来访问。

    数组的成员全部是同类型,而结构体变量的成员可以是不同数据类型

    4、共用体与结构体的区别

    1、结构体使用struct关键字来定义,共用体使用union关键字来定义
    2、结构体的每个成员都有单独的内存空间,而共用体的所有成员共用同一块内存(最大的成员对应的内存)
    3、共用体变量与结构体变量访问成员的方法是一样

    5、typedef和#define的区别

    1、 #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。

    2、typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifier inside a function definition。

    6、宏定义与枚举的区别

            枚举是一中类型,可以用来定义变量,可以包含多个枚举成员,而宏是替换,没有类型,也没有多个成员。

    强调:enum;  

        1、枚举成员的每一个成员都是整数
        2、分隔符:为逗号‘,’
        3、可以直接赋值:struct和union都不行。
        4、枚举的成员直接访问

  • 相关阅读:
    浅谈查找算法
    嵌入式开发:5个可能不再被禁止的C特征
    Python 爬虫小练习:基于 XPath 的表格信息爬取
    C#项目版本号自定义位置自动向上增加小工具设计与实现
    1665. 完成所有任务的最少初始能量-快速排序+贪心算法
    Swagger2--自动生成接口文档工具学习
    作为编程的我们,针对我们的职业,初入职场要如何规划呢?
    期货十三篇 第六篇 加仓篇
    交易日均千万订单的存储架构设计与实践 | 京东物流技术团队
    论文阅读[51]通过深度学习快速识别荧光组分
  • 原文地址:https://blog.csdn.net/m0_51274562/article/details/127170292