结构体学习笔记

对于自定义结构体/枚举/联合(共同体)上课知识点的小小记录。

2024/02/27

  1. 匿名结构体类型
    一般情况下只能用一次,因为在创建匿名结构体的时候就要创建变量了。还有一点需要注意的是,尽管匿名结构体里member-list是完全一样的,匿名结构体的指针是不能获取匿名结构体变量的地址的。
    typedef匿名结构体是可行的
  2. Struct如何初始化,结构体初始化时,遇到数组成员时,需要使用{}
  3. 结构体内存对齐
    #include <stddef.h>
    offsetof(); 可以计算结构体成员相较于结构体起始位置的偏移量
  4. 修改默认对齐数
    #pragma pack()     //取消默认对齐数修改,还原为默认
    #pragma pack(8)   //默认对齐数改为8
    #pragma pach(1)   //默认对齐数改为1
  5. 位段
    数据包在网络上传输时候会用到位段
  6. 枚举常量
    枚举常量变量赋值时候,只能用枚举常量来赋值,用其他的类型,比如int来赋值,c语言可能不会报错,但是c++(类型检测比较严格)就会报错
  7. 联合(共用体)
    union Uh1
    {
        char c[5];  占用大小5,对齐数按成员的来计算,那就是1
        int i; 对齐数为4
    };   最大元素的大小不是int i的整数倍,所以该联合体占用空间为8
    如何计算该联合体的大小
  8. 如何实现通讯录
    1. test.c contact.c contact.h
    2. 通讯录包含内容: 名字,年龄,性别,电话,地址
    3. 通讯录功能: add, del, search, modify, show, sort, exit
    4. #define MAX 100, MAX_NAME, MAX_SEX, MAX_TELE, MAX_ADDR
         struct PepInfo, struct Contact
         InitContact();
         AddContact();
         ShowContact(); printf(“%-20s\t”,   ) 标题也要打印
         DelContact();   pc->data[i] = pc->data[i + 1]; //这是可以实现的,结构体变量虽然存放的是多个变量,struct变量a和b是可以互相赋值的 
         FindByName();
         SearchContact(); 
         ModifyContact();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值