内容发布更新时间 : 2025/10/31 15:15:41星期一 下面是文章的全部内容请认真阅读。
欢迎阅读 } //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 { 欢迎阅读