结构和动态数据结构(总论)——笔记

本文介绍了C语言中结构的定义,结构变量的使用,包括动态内存分配、结构指针、链表(包括动态链表)的概念,以及malloc、free、联合、位域和枚举的特性,以及typedef在类型定义中的作用。还讨论了结构形参和结构指针形参的含义。
摘要由CSDN通过智能技术生成

结构里面可以嵌套结构

结构变量只定义模式,不分配存储空间

定义结构体变量:

1. 指明struct,并且指明struct_type

2. 同时定义结构类型+变量

神奇的定义方式:

struct

{

        char name[20];

        int gender;

        int age;

   }t[1000001],a={"Celseca",1,19},*pt;

未定初值的局部变量的值是不确定的

链表初体验:

struct pNode

{

        float pos[2];

        struct pNode*next;

} p,u,*pt;

p.next=&u;

结构指针辨析:

*pt.day等价于*(pt.day)

应使用*(pt).day

链表!

数据之间的关系由程序随时设定和改变

第一个:表头

最后一个:表尾

动态链表!(划重点)

申请存储空间:

一个个节点地建立动态链表:

malloc:申请存储空间,返回开始地址

void *malloc(unsigned size)

动态数据已经分配完:返回None

int value:数据域

free:释放由ptr所指向的存储块,要求ptr的值是调用函数malloc或calloc

联合、位域

联合:要求数据对象在程序执行的不同时期能存储不同类型的值(可能整型可能浮点型,之类的)

同一存储区域当做不同类型变量来使用

如 union udata x, y, g; 也可将联合类型定义与变量定义合在一起,如      

union  udata  //同一块存储区域哦

{        

        int    ival;        

        char   chval;        

         float  fval;      

 } x, y, g;

x.ival  (视联合变量 x 为 int 型的)        

y.chval (视联合变量 y 为 char 型的)      

g.fval  (视联合变量 g 为 float 型的)

//要求能存储最大的一种数据!

位域

枚举

即枚举专用名称信息:程序用枚举方法列举一组标识符作为枚举类型的值的集合。当一个变量具有

这种枚举类型时,它就能取枚举类型的标识符值

程序不能对枚举常量赋值

编译系统将枚举类型中的标识符值作为常量处理,故称枚举常量。程序不能对它们赋值

如   SUN = 0 或  SAT = 6 都是错误的

枚举常量的对应整数也可由程序直接指定

如     enum weekday {SUN=7,MON=1,TUE,WED,THU,FRI,SAT};

typedef!

作为类型命名的机制

用 typedef 定义新类型名后,对于结构,联合或枚举类型,使用它们定义或说明变量时不再冠类型类别关键字

结构形参

是给结构形参分配存储单元,是函数的局部变量

结构指针形参即储存相关地址,相关的值重新存储于计算机相应的成分中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值