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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啵啵520520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值