20240506(构造数据类型、位运算、内存管理、链表的相关学习)

本文介绍了C语言中的共用体、内存大小端特性、枚举类型、位运算符的使用,以及内存管理函数malloc和free,同时对比了数组和链表的不同特点。
摘要由CSDN通过智能技术生成

1.共用体定义:
    union 公用名 {
        数据类型1 成员变量1;
        数据类型2 成员变量2;
        数据类型3 成员变量3;
        ..
    };

    注意:
        1.结构体每个成员变量空间独立
        2.共用体每个成员变量空间共享的

2.内存大小端
    内存小端:内存低地址存放低数据位,内存高地址存放高数据位
    内存大端:内存低地址存放高数据位,内存高地址存放低数据位

3.枚举类型:
    enum 枚举类型名 
    {
        枚举常量1,
        枚举常量2,
        枚举常量3, 
        ..
    };

    注意:
        1.枚举变量的值在枚举常量中选择其一作为它的值
        2.枚举常量默认为int类型,第一个枚举常量的值默认为0,后续枚举常量的值为前一个枚举常量的值+1 

2.位运算:
    &       按位与
    |       按位或
    ^       按位异或           相同为0,相异为1 
    ~       按位取反
    >>      右移               右移n位 = 缩小, 数据 / 2^n
    <<      左移               左移n位 = 放大, 数据 * 2^n 

    与0得0
    或1置1 

    将字节中第n位置1:
        num = num | (1 << n);
    
    将字节中第n位置0:
        num = num & ~(1 << n);

    不使用中间变量实现两个变量值的交换:
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;

=========================================================================
内存管理:
    1.malloc 
      void *malloc(size_t size);
      功能:
        申请堆区空间
      参数:
        size:申请堆区空间的大小
      返回值:
        成功返回堆区空间首地址
        失败返回NULL

    2.free 
      void free(void *ptr);
      功能:
        释放堆区空间
      参数:
        ptr:堆区空间首地址
      返回值:
        缺省



内存溢出:也称为内存越界,操作超过变量范围的空间数据
内存泄露:malloc申请的空间没有使用free释放
内存碎片:由于频繁malloc和free小空间,导致大的连续空间由于中间存在小空间被
         占用而无法得到申请空间的现象称为内存碎片



数组:
    1.空间连续(访问数据方便、空间必须连续)
    2.数组元素必须是有限
    3.数组插入、删除元素效率低

链表:
    1.空间不需要连续(访问数据麻烦、空间不需要连续,可以使用小的分散空间)
    2.链表元素可以没有上限
    3.链表插入、删除元素效率高


  


 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值