• 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、枚举的成员直接访问

  • 相关阅读:
    Git --》如何玩转Gitee?
    AutoSAR入门到精通讲解-总目录
    Flink异步io关联Hbase
    从哪些方面分析Linux内核源码
    最远点采样(Farthest Point Sampling,FPS)算法详解
    哈希?是个什么东西?
    每日算法刷题Day4-完全数、分情况输出、平方矩阵、斐波那契数列匹配输出
    用Python绘制了若干张词云图,惊艳了所有人
    Leetcode 2895. Minimum Processing Time
    视频基础知识(一)
  • 原文地址:https://blog.csdn.net/m0_51274562/article/details/127170292