欢迎阅读 } //getArray3_Free(p3, num3); // p3=NULL; getArray3_Free2(&p3, num3); printf(\ system(\} 5
结构体专题
5.1大纲
01、结构体类型定义及结构体变量定义 char c1,char c2, char name[62]; int age char name[62]; int age,char c1,char c2 结构体变量的引用 . 结构体变量的指针 -> 02、结构体做函数参数 结构体赋值编译器行为研究 结构体变量做函数参数 PK 结构体指针做函数参数 结构体做函数参数(//结构体赋值和实参形参赋值行为研究) 内存四区调用图画法 //从键盘获取数据,给结构体变量初始化,并排序,打印结构体 stack上分配结构数组和heap上分配结构体数组 03、工程开发中,结构体开发的常见模型及典型错误用法 结构体嵌套一级指针 结构体嵌套二级指针 04、结构体中的深拷贝浅拷贝 问题抛出 解决方法 5.2结构体类型定义及变量定义 /* //结构体类型定义及结构体变量定义 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------自定义数据类型 结构体类型定义 */ //声明一个结构体类型 struct _Teacher { char name[32]; char tile[32]; int age; char addr[128]; }; //定义结构体变量的方法 /* 欢迎阅读
欢迎阅读 1)定义类型 用类型定义变量 2)定义类型的同时,定义变量; 3)直接定义结构体变量; */ struct _Student { char name[32]; char tile[32]; int age; char addr[128]; }s1, s2; //定义类型的同时,定义变量; struct { char name[32]; char tile[32]; int age; char addr[128]; }s3,s4; //直接定义结构体变量 //初始化结构体变量的几种方法 //1) struct _Teacher t4 = {\//2) struct Dog1 { char name[32]; char tile[32]; int age; char addr[128]; }d5 = {\//3) struct { char name[32]; char tile[32]; int age; char addr[128]; }d6 = {\//结构体变量的引用 int main11() { //struct _Teacher t1, t2; //定义同时初始化 { struct _Teacher t3 = {\ printf(\欢迎阅读
欢迎阅读 printf(\ } //用指针法和变量法分别操作结构体 { struct _Teacher t4; struct _Teacher *pTeacher = NULL; pTeacher = &t4; strcpy(t4.name, \ strcpy(pTeacher->addr, \ printf(\ } printf(\ getchar(); return 0; } 5.3结构体做函数参数及结构体数组 //测试两个结构体变量之间可以copy数据吗? //t2 = t1; //测试实参传给形参,编译器的行为 //结果很出人意外 //声明一个结构体类型 struct _MyTeacher { char name[32]; char tile[32]; int age; char addr[128]; }; void printfMyteach01(struct _MyTeacher t) { printf(\} void printfMyteach02(struct _MyTeacher *t) { printf(\} //结构体赋值和实参形参赋值行为研究 int main21() { struct _MyTeacher t1, t2; memset(&t1, 0, sizeof(t1)); strcpy(t1.name, \ strcpy(t1.addr, \ strcpy(t1.tile, \ t1.age = 1; 欢迎阅读
欢迎阅读 //测试两个结构体变量之间可以copy数据吗? //t2 = t1; //测试实参传给形参,编译器的行为 //结果很出人意外 printfMyteach01(t1); printfMyteach02(&t1); getchar(); return 0; } //定义结构体数组 int main22() { int i = 0; struct _MyTeacher teaArray[3]; struct _MyTeacher *tmp = NULL; for (i=0; i<3; i++) { strcpy(teaArray[i].name, \ //printf(\ tmp = &teaArray[i]; printf(\ } getchar(); return 0; } 例子 从键盘接受数据。。。。并排序 int printfArray(struct _MyTeacher *teaArray, int count) { int i = 0; //打印 for (i=0; i 欢迎阅读 { printf(\请键入教师名字:\ scanf(\ printf(\请键入教师年龄:\ scanf(\ } for (i=0; i<3; i++) { for (j=i+1; j<3; j++) { if (teaArray[i].age >teaArray[j].age) { tmp = teaArray[i]; teaArray[i] = teaArray[j]; teaArray[j] = tmp; } } } //打印 for (i=0; i<3; i++) { printf(\教师名字:\ printf(\ printf(\教师年龄:\ printf(\ } printf(\ printfArray(teaArray, 3); system(\} 5.4结构体在工程开发中的应用 //测试输入 //测试打印 //测试malloc //测试typdef用法 //定义结构体数组 struct _Student { char name[32]; char tile[32]; }; //声明一个结构体类型 struct _itTeacher { 欢迎阅读