学习网站:C语言网.
编译器:Red Panda Dev-C++
1.struct结构体的定义和使用
// 1.数组的成员是同一类型的;结构体的成员可以是不同类型的;
// 2.使用该结构体必须说明结构类型的变量
// 结构变量说明语法:struct 结构类型名称 结构变量名;
// 3.结构变量的成员在内存中占用连续的存储区域,所占内存大小为结构中每个成员的长度之和;
// 4.访问结构中成员的方法:结构变量名.成员名称,如:student1.tel;
// 5.结构初始化一般形式:struct 结构类型名 结构变量={初始化数据1,...,初始化数据n};
#include2.结构体数组的使用#include // 结构体定义; struct _INFO{ int num; char str[256]; }; int main(void){ struct _INFO A; // 使用结构体,结构变量A; A.num = 2022; // A.num,为成员初始化; strcpy(A.str, "Welcome to FUXI Technology"); printf("This year is %d %sn", A.num, A.str); return 0; }
// 1.结构体数组是一个数组,数组的每个元素都是结构体类型; // 2.实际应用:用结构体数组表示具有相同数据结构的一个群体,如:一个班的学生档案,一个车间员工的工资表; // 3.实例说明: #include3.结构体指针// 定义结构体 struct address{ char name[30]; char street[40]; unsigned long tel; unsigned long zip; }; // 初始化结构体变量 struct address students[3]={ {"Willard","Road NO.1",6722000,525200}, {"ChenJD","Road NO.2",6722001,525201}, {"LinWY","Road NO.3",6722002,525202} }; int main(void){ printf("姓名tt街道tt电话tt邮编n"); for(int i = 0;i < 3;i++){ printf("%stt%st%lutt%lun",students[i].name,students[i].street,students[i].tel,students[i].zip); } return 0; }
// 1.结构体指针:指向结构体的指针; // 2.当一个指针用来指向一个结构体变量时,称为结构体指针变量; // 3.结构体指针变量中的值是所指向的结构变量的首地址,通过结构指针访问该结构变量; // 4.结构体指针变量定义一般形式:struct 结构类型名 *结构指针变量名 // 5.结构体指针通过箭头(->)访问成员; #include4.union共用体定义和使用struct address{ char name[30]; char street[40]; unsigned long tel; unsigned long zip; }; int main(void){ struct address students[3]={ {"Willard","Road NO.1",6722000,525213}, {"ChenJD","Road NO.2",6722001,525214}, {"LinWY","Road NO.3",6722002,525252} }; struct address *p; p=&students[0]; printf("姓名tt街道tt电话tt邮编n"); for(int i = 0;i < 3;i++){ printf("%stt%st%lutt%lun",p->name,p->street,p->tel,p->zip); p++; } return 0; }
// 1.C语言中,允许几种不同类型的变量存放到同一段内存单元中,几个变量相互覆盖; // 2.几个不同的变量共同占用一段内存的结构,被称为共用体类型结构; // 3.定义形式: // 4.不能直接引用共用体变量,只能引用共用体变量中的成员; // 5.共用体变量成员引用方法:共用体变量名.成员名 // 6.同一内存段,可以用来存放几种不同类型的成员,但每一瞬间只能存放其中的一种,而不是同时存放几种;即:每一瞬间只有一个成员起作用,其他成员不起作用; // 7.共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用; // 8.共用体变量的地址和它各成员地址都是同一地址; // 9.不能对共用体变量名赋值,不能企图引用变量名来得到一个值,不能在定义共用体变量时对它进行初始化; // 10.不能把共用体变量作为函数参数,不能是函数返回共用体变量,但可以使用指向共用体变量的指针; // 11.共用体类型可以出现在结构体类型的定义中,可以定义共用体数组; // 12.结构体可以出现在共用体类型的定义中,数组可以作为共用体的成员;
#include5.typedef用法union INFO{ int numA; int numB; int numC; int numD; }; int main(void){ union INFO A; A.numA = 584; A.numB = 520; A.numC = 13; A.numD = 14; // 结果输出均为14; printf("numA = %dn", A.numA); printf("numB = %dn", A.numB); printf("numC = %dn", A.numC); printf("numD = %dn", A.numD); return 0; }
// 1.使用类型说明语句typedef定义新的类型来代替已有类型; // 2.typedef语法形式:typedef 已定义的类型 新的类型; // 3.typedef常用:给结构体变量重命名;
#include6.enum枚举类型#include // INFO类型等价于struct _INFO类型 typedef struct _INFO{ int numberOne; char str[256]; }INFO; int main(){ struct _INFO A; INFO B; // 等价于struct _INFO B; A.numberOne = 2022; strcpy(A.str,"Welcome to FUXI Technology."); B = A; // 打印的内容一模一样; printf("This year is %d %sn",A.numberOne, A.str); printf("This year is %d %sn",B.numberOne, B.str); return 0; }
// 1.枚举类型语法:
// enum 枚举名 {枚举元素1,枚举元素2,...};
#include
int main(void){
// 定义一个enum week类型,共7个值;
enum Week{MON = 1, TUE, WED, THU, FRI, SAT, SUN};
// 定义枚举变量;
enum Week A = TUE;
enum Week B = SUN;
printf("TUE = %dn", A); // 打印2;
printf("SUN = %dn", B);
return 0;
}



