作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13
作业目标:自学《c语言程序设计》第十二章
作业正文:
教材学习内容总结
《c语言程序设计》
结构体(struct):
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合1。
结构体可以存储不同类型的数据,如 int、float、char 等3。
结构体的声明使用 struct 关键字,例如:
struct Info {
unsigned long identifier; //学号,用无符号长整数表示
char name[20]; //名字,用字符数组表示
unsigned int year; //入学年份,用无符号整数表示
unsigned int years; //学制,用无符号整数表示
};
结构体成员的访问采用点号运算符.2。例如,info.name
就是引用 info 结构体的 name 成员。
数据库结构:
在C语言中,由于无法直接操作数据库,所以在项目中通过对结构体内部变量的操作将大量的数据存储在内存中,以完成对数据的存储和操作1。
结构体可以用来模拟数据库中的记录。例如,一个学生的信息就需要学号(字符串),姓名(字符串),年龄(整形)等等。这些数据类型都不同但是他们又是表示一个整体,要存在联系,那么我们就需要一个新的数据类型。——结构体,它就将不同类型的数据存放在一起,作为一个整体进行处理1。
学习过程的问题
理解问题是第一个:结构体是一种复合数据类型,需要理解如何将多种不同类型的数据组合在一起。
C语言中,结构体的大小并不是其所有成员大小之和,而是考虑到了内存对齐。这会导致在计算结构体大小时出现错误。
《C语言程序设计》第十二章
结构体是一种数据类型,它可以由多个不同类型的数据组成。结构体的定义方式与基础数据类型类似,但是需要在定义时指定结构体中包含的数据类型和名称。结构体可以用于封装多个数据,方便进行操作。在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言无法操作数据库,所以在项目中通过对结构体内部变量的操作将大量的数据存储在内存中,以完成对数据的存储和操作。在实际问题中有时候我们需要几种数据类型一起来修饰某个变量。例如一个学生的信息就需要学号(字符串),姓名(字符串),年龄(整形)等等。这些数据类型都不同但是他们又是表示一个整体,要存在联系,那么我们就需要一个新的数据类型——结构体,它就将不同类型的数据存放在一起,作为一个整体进行处理。结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。结构体的大小不是结构体元素单纯相加就行的,因为我们现在主流的计算机使用的都是32Bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragmapack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。规则1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragmapack指定的数值和这个数据成员自身长度中,比较小的那个进行。2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragmapack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。3、结合1、2可推断:当#pragmapack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。
三,基于AI的学习
学习进度条
代码行数 | 博客数 | 学习时间 | |
目标 | 5000 | 30 | 400 |
第一周 | 200/200 | 2/2 | 20/20 |
第二周 | 300/300 | 4/4 | 28/28 |
第三周 | 500/500 | 6/6 | 30/30 |
第四周 | 500500 | 8/8 | 30/30 |
第五周 | 600/600 | 9/9 | 35/35 |
第六周 | 800/800 | 10/10 | 40/40 |
第七周 | 1000/1000 | 12/12 | 45/45 |
第八周 | 1200/1200 | 14/14 | 48/48 |
第九周 | 1400/1400 | 15/15 | 52/52 |
第十周 | 1600/1600 | 17/17 | 56/56 |
第十一周 | 1800/1800 | 18/18 | 60/60 |
第十二周 | 2000/2000 | 19/19 | 64/64 |
第十三周 | 2200/2200 | 20/20 | 68/68 |