0
0
0
结构体
文章摘要
|
结构体
一、结构体的定义和使用。
-
定义
结构体就是自己的定义的一个数据类型(类似于int char等)。
-
定义
struct Sudent{ char name; int age; char class; };
-
嵌套定义
struct Data{ int year; int month; }; struct Sudent{ char name; int age; struct Data brithday; };
定义结构体变量的方式:
//方式一 struct Sudent s; //方式二 struct Sudent{ char name; int age; char class; }s; -
-
初始化和使用
struct Student s; s.name = "L"; s.age = 18; printf("%d,%c\n",s.age,s.name);// 18,Lstruct Student s; s.brithday.year =2012; printf("%d\n",s.brithday.year);// 2012/*例1:定义一个结构体变量(包括年、月、日),输出一个日期*/ #include<stdio.h> int main(){ struct Data { int year; int month; int day; }d = {2023,12,9}; printf("%d,%d,%d\n",d.year,d.month,d.day); return 0; } #include<stdio.h> int main(){ struct Data { int year; int month; int day; }; d.year = 2023; d.month = 12; d.day = 9; printf("%d,%d,%d\n",d.year,d.month,d.day); return 0; }
二、结构体数组
-
定义结构体数组:
struct Penson{ char name[10]; char sex[10]; int ticket; }; struct Penson penson[5]; //struct Penson penson[5] 类似于 int n[5]; -
应用
有n个选举人的信息(包括姓名、性别、票数),按照票数的由高到底输出选举人的信息。
#include<stdio.h> struct Penson{ char name[10]; char sex[10]; int ticket; }penson[5]; int main(){ struct Penson t; int i,j; printf("请输入每个选举人的信息:\n"); for(i = 0;i < 5;i++){ printf("请输入第%i个选举人的信息:\n",i+1); scanf("%s %s %d",&penson[i].name,&penson[i].sex,&penson[i].ticket); } for(i = 0;i < 5;i++){ for(j = 0;j < 5-i-1;j++){ if(penson[j].ticket < penson[j+1].ticket){ t = penson[j]; penson[j] = penson[j+1]; penson[j+1] = t; } } } for(i=0;i<5;i++){ printf("%s %s %d\n",penson[i].name,penson[i].sex,penson[i].ticket); } return 0; }
三、结构体指针
-
指向结构体变量的指针
#include<stdio.h> #include<string.h> struct Penson{ char name[10]; char sex; int ticket; }penson[5]; int main(){ struct Penson penson; struct Penson *p; p = &penson; strcpy(penson.name,"张三"); penson.sex = 'M'; penson.ticket = 89; printf("%s %c %d\n",penson.name,penson.sex,penson.ticket); printf("%s %c %d\n",p->name,p->sex,p->ticket); return 0; }
-
指向结构体数组的指针
#include<stdio.h> struct Penson{ char name[10]; char sex; int ticket; }penson[5]; int main(){ struct Penson penson[3]={{"张三",'m',34},{"李四",'w',67},{"王五",'w',32}}; struct Penson *p; for(p = penson;p < penson+3;p++){ printf("%s %c %d\n",p->name,p->sex,p->ticket); } return 0; } /* 张三 m 34 李四 w 67 王五 w 32 */ -
结构体变量和结构体变量指针做函数参数
#include<stdio.h> struct Penson{ char name[10]; char sex; int ticket; }penson[5]; void print(struct Penson penson[]){ struct Penson *p; for(p = penson;p < penson+3;p++){ printf("%s %c %d\n",p->name,p->sex,p->ticket); } } int main(){ struct Penson penson[3]={{"张三",'m',34},{"李四",'w',67},{"王五",'w',32}}; struct Penson *pen = penson; print(pen); return 0; } /* 张三 m 34 李四 w 67 王五 w 32 */
