C语言函数初二笔记 c语言函数菜鸟教程

C语言笔记(五)----struct , enum,typedef等 成员表列由若干个成员组成C语言函数初二笔记 , 每个成员都是该结构的一个组成部分 。
对每个成员也必须做类型声明 。
其形式为:
类型声明符 成员名;
例如:
注意,最后括号外面的;分号是不可少的。
结构定义之后,才可以进行变量声明 。
凡声明为结构stu的变量都由上述4个成员组成 。
由此可见,结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合 。
声明结构变量有以下三种方法 。
使用上面定义的stu为例:
如:
也可以用宏定义使一个符号常量来表示一个结构类型 。例如:
例如:
这种形式的声明的一般形式为:
例如:
这种声明的一般形式为:
第三种方法与第二种方法的区别在于第三种方法中省去C语言函数初二笔记了结构名 , 而直接给出结构变量 。
在程序中使用结构变量时,往往不把她作为一个整体来使用 。
在ANSI C中除了允许有相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括 赋值、输入、输出、运算 等都是通过结构变量的成员来实现的 。
表示结构变量成员的一般形式为:
结构变量名.成员名
例如: boy1.numboy2.sex
如果成员本身又是一个结构,则必须逐级找到最低级的成员才能使用 。如: boy1.birthday.month
结构变量的赋值就是给各成员赋值 。
数组的元素也可以是结构类型的 。
因此可以构成结构型数组 。
初始化赋值:
当然也可以在定义 stu结构 时同时声明 pstu 。
赋值是把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量 。
如果 boy 是被声明为 stu类型 的结构变量 。
则:
有了结构指针变量,就能更方便地访问结构变量的各个成员 。
其访问的一般形式为:
(*结构指针变量).成员名

结构指针变量-成员名
例如: (*pstu).num或pstu-num
例如:
介绍数组的时候,曾介绍过数组的长度是预先定义好的 , 在整个程序中固定不变 。
C语言中不允许动态数组类型 。
例如:
但是又有此需求,为了解决这个问题,C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段 。
常用的内存管理函数有3个:
例子:分配一块区域,输入一个学生数据
上面的例子采用了动态分配的办法为一个结构分配内存空间 。
每一次分配一块空间可用来存放一个学生的数据,我们可称之为一个节点 。
有多少个学生就应该申请分配多少块内存空间,也就是说要建立多少个节点 。
当然用结构数组也可以完成上述工作,但如果预先不能准确把握学生人数 , 也就无法确定数组大小 。
而且当学生留级、退学之后也不能把该元素占用的空间从数组中释放出来 。
用动态存储的方法可以很好地解决这些问题 。
有一个学生就分配一个节点,无须预先确定学生的准确人数 , 某学生退学 , 可删去该节点,并释放该节点占用的存储空间,从而节约了宝贵的内存资源 。
另一方面,用数组的方法必须占用一块连续的内存区域 。
而使用动态分配时 , 每个节点之间可以是不连续的(节点内是连续的) 。
节点之间的关系可以用指针实现 。
即在节点结构中定义一个成员项来存放下一节点的首地址,这个用于存放地址的成员,常把他称为指针域 。

推荐阅读