C语言:结构体

1.结构体定义

struct  结构体名

{

        成员列表;

};

在主函数中初始化结构体,对于部分初始化,在成员名前加“ . ”,如:

2.结构体变量

在结构体后加变量名,如:

struct  结构体名

{

        成员列表;

}s1,s2;

只能对结构体变量的各个成员分别进行输入输出;

结构体变量初始化可以在定义的时候初始化,也可以在调用的时候初始化;

3.结构体数组

4.结构体对齐

系统会浪费几个字节,对齐结构体,提高CPU执行效率,数组结构体对齐按照基类型对齐;

结构体对齐规则:

(1)结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;

(2)结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数,最好是先声明小字节,后声明大字节;

(3)如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;

(4)用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是1、2、4、8、16。

5.结构体与指针

 一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变 量,用来指向

一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量 也可以用来指向结构

体数组中的元素。

指针可以写成(*s) . id,也可以写成 s -> id,当左边是指针时用s -> id,左边是变量时用(*s) . id;

非数组的结构体变量可以整体赋值;

结构体整体不可以比较,结构体内的成员可以比较;

快速排序法qsort和结构体指针:

6.用指针处理链表

链表每个节点的地址不连续,不能用+i 访问第i个节点,只能挨个访问;

有头链表:在指针和头节点之间加一个首节点,避免指针的指针出现;

头插法:每个新节点都是首节点;

遍历,计算有效字符个数,以及判断链表是否为空;

头插的原理:

首先定义一个pHead为空指针NULL;

创建一个新的节点pNew;

pHead先把他自身的地址NULL给pNew作地址;

pHead再指向pNew;

随后pNew的值被定义,此时pNew变成头节点,并且pHead指向pNew;pNew被销毁;

随后再创一个节点pNew;

pHead把头节点的地址再给pNew,此时,新的pNew指向头节点;

pHead再指向pNew,以此类推,

最终创建出一个链表,最开始插入的节点被排在最后一位节点,地址为NULL,最后一个插入的节点为头节点;

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值