c语言读书笔记由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言的读书笔记”。
C语言读书笔记
——读《C程序设计》笔记
一学期对《c语言程序与设计》的学习与应用使我对c语言产生了浓厚的兴趣。C语言程序与设计是一门实践性很强的课程,不可能只靠听课和看书就掌握c语言程序与设计,因此必须十分重视动手编写程序和上机运行程序能力的培养。所以我自己在课后学习了《C程序设计》中的“结构体”部分,以下为在学习过程中所做的笔记。
一、结构体;
结构体概述:
结构是一种“构造”而成的数据类型,在说明和使用之前必须先定义它,也就是构造它。
定义一个结构的一般形式为:
struct 结构名
{成员表列};
成员表列由若干个成员组成,每个成员都是该结构的一个组成成分。对每个成员也必须进行类型说明,其形式为:
类型说明符 成员名;
结构名和成员名应该符合标识符的书写规定。
结构体变量的定义
1)先定义结构体,再说明结构变量。
2)在定义结构体类型的同时定义结构变量。
3)直接说明结构变量。
结构体变量的引用
定义结构体型变量的目的就是为了在后续程序中引用它。
注意:结构体型变量是一种聚合性变量,可引用的对象有两个:变量名代表变量的整体,成员名代表变量的各个成员,两者均可在程序中引用。但应遵守以下规则:
1)不能将一个结构体变量作为一个整体进行输入和输出。
2)如果成员本身又属于一个结构类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取运算。
3)对成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。结构体变量的初始化
像数组一样,能够以值列表的方式为结构体的各个分量数据进行初始化。初始化时,将所提供的数据按照各分量的顺序排列,如果结构分量仍是结构,则按最低层类型提供数据。另外,还可以通过分别赋值的方式为结构变量的各个分量赋值。
二、结构体数组
数组的元素也可以是结构体类型的,因此可以构成结构体数组。结构体数组的每一个元素都是具有相同结构体类型的下标结构体变量。在实际应用中,经常用结构体数组来表示具有相同数据结构体的一个群体。
方法和结构变量相似,只需说明它为数组类型。
三、结构体类型指针
指向结构体变量的指针
结构指针变量说明的一般形式为:
Struct 结构名 *结构指针变量名
赋值是把结构变量的首地址赋予该指针变量,不能把结构名赋予该指针变量,而只能将结构体变量赋予该指针变量。
表示结构成员的三种等效形式:
1)结构变量.成员名
2)(*结构指针变量).成员名
3)结构指针变量->成员名
指向结构体数组的指针
指针变量可以指向一个结构数组,这时结构指针变量的值是整个结构数组的首地址。结构指针变量也可以指向结构数组的一个元素,这时结构指针变量的值是该结构数组元素的首地址。
注意,一个结构指针变量虽然可以用来访问结构变量或结构数组元素的成员,但是,不能使它指向一个成员。也就是说,不允许取一个成员的地址来赋予它。
结构指针作为函数参数
用结构变量作为函数参数进行整体传送的最好的办法就是使用指针,这时,由实参传向形参的只是地址,从而减小了时间和空间的开销。
四、动态内存分配
动态存储分配函数
为了处理动态数据结构,必须在程序的执行过程中动态的分配内存。
1)分配内存空间函数malloc
调用时的一般形式:
(类型说明符*)malloc(size)
2)分配内存空间函数calloc()
调用时的一般形式:
(类型说明符*)calloc(n,size)
说明:在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址,其中(类型说明符*)用于强制类型转换。
3)释放内存空间函数free()
调用时的一般形式:
Free(void *ptr);
说明:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,它指向被释放区域的首地址,被释放区应是由malloc()或calloc()函数所分配的区域。
五、注意问题:
① 结构体名和结构体变量时两个不同的概念,不能混淆。结构体名只能表示一个结构形式,编译系统并不对它分配内存空间。只有当某变量被说明为这种类型的结构时,才能对该变量分配存储空间。
② 结构指针变量能更方便的访问结构变量的各个成员,其访问一般形式为:
(*结构指针变量名).成员名或者为结构指针变量→成员名
③ 字节对齐的问题,一般为4,具体依编译器而定。
1一个占N 个字节的变量,存储在首地址偏移量为N的n倍的地址上、2结构体变量占的总内存大小等于它的成员的数据类型最大的n倍