struct,union,enum,typedef,define

结构体struct:
①结构体定义:struct 标签名 {} ;变量定义;
②结构体赋值: 变量名 = {,,,,}   .成员 = 值;
③计算结构体大小要考虑到结构体中包含的所有类型,并且要考虑对齐问题


联合体union:
①计算联合体大小只需要考虑结构体中包含的类型中所占最大空间的那个类型
②一个值被赋值的时候,前面已经赋值的会被覆盖(不显示)/ 可以定义多个类型,但一次只能用一个类型,只能一个有效,其他都无效。

枚举enum:
①enum实际上是一个整形,给一个词,赋值为某个整数。从0开始。
②一般放在switch语句的case中,增加可读性。

struct,union,enum的定义类似
关键字  标签名  变量定义

①关键字typedef: 为基本数据类型定义新的类型名
 typedef int ZX  --->int型被重新命名为ZX

②宏定义define
定义:#define  名字   值             -->要调用这个值的时候直接调用这个名字
取消定义:#undef  名字

链表和数组

①链表:是一种数据结构,其每一个数据都是一个结构体。他的每一个数据都指向下一个数据的地址。
②数组:数组的地址是连续的,增删不方便,移动一个数据,所有数据都得移动。


链表的操作:
①创建节点:头插、尾插、随机插入,malloc一个空间
随机插入:先让新值指向要插入的位置的下一个值,再令要插入的位置的上一个值指向新值。
头尾插:注意头和尾,尾插让新值的next指向空。
②删除节点:先找到要删除的节点,令其前面的值指向其后面的值,然后再将要删除的值指向NULL,随后free掉。
③循环遍历:运用for循环,for(Class_link tmp_node = head_node->next; tmp_node != NULL;  tmp_node = tmp_node->next)
           for  ( 结构体名     变量承接 = 第一个元素值 ;不为空就没到最后一个;每次指向下一个)
 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到了在C语言中使用typedef来重命名结构体和枚举类型。通过typedef,我们可以给结构体和枚举类型起一个新的名称,以便在后续的代码中使用更简洁的方式来声明变量。例如,使用typedef可以将"typedef struct stu { ... } stu;"来重命名结构体类型为"stu"。同样地,也可以使用typedef来重命名枚举类型。 引用中提到,使用typedef可以解决结构体传参的问题。这是因为typedef是对类型进行重命名,使用它可以将结构体类型重命名为更简短的名称,从而在函数参数的声明和调用中简化代码。 然而,需要注意的是,typedef只是对类型进行重命名,它并不改变类型本身的定义。而使用#define进行宏替换则不同,它只是简单地将文本进行替换,不会创建新的类型定义。因此,在某些特定情况下,typedef更适合用于重命名结构体和枚举类型。 引用中提到,C语言中的typedef不支持对复杂类型的扩展,不能像宏替换一样进行简单的替换。而使用#define进行宏替换可以对任意类型进行扩展。例如,可以使用#define将"typedef static int sint32_t;"这样的类型别名定义进行宏替换。 所以,通过typedef可以重命名结构体和枚举类型,而使用宏替换则可以在更广泛的范围内进行类型定义的扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【C语言】关键字的深入理解(第六期)](https://blog.csdn.net/m0_61784621/article/details/125113937)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值