结构体-指针-链表

上传人:正** 文档编号:51716972 上传时间:2018-08-16 格式:PPT 页数:41 大小:179KB
返回 下载 相关 举报
结构体-指针-链表_第1页
第1页 / 共41页
结构体-指针-链表_第2页
第2页 / 共41页
结构体-指针-链表_第3页
第3页 / 共41页
结构体-指针-链表_第4页
第4页 / 共41页
结构体-指针-链表_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《结构体-指针-链表》由会员分享,可在线阅读,更多相关《结构体-指针-链表(41页珍藏版)》请在金锄头文库上搜索。

1、结构体-指针-链表结构体: 用户可以自己定义数据类型结构体char name20;char sex;int age;float score;char addr30; 结构体类型定义的作用域结构体类型定义描述结构 的组织形式,不分配内存namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节struct student int num;char name20;char sex;int age;float score;char addr30; 结构对应关系如何声明结构体类型的变量先定义结构体类型,再定义结构体变量 形式一: struct 结构体名 类型标识符 成员名;类

2、型标识符 成员名;. ; struct 结构体名 变量名表列;例 struct student int num;char name20;char sex;int age;float score;char addr30; struct student stu1,stu2; 结构体类型的定义和结构体变量声明一起 形式二: struct 结构体名 类型标识符 成员名;类型标识符 成员名;. 变量名表列;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; 无名结构体类型的定义和

3、结构体变量声明一起 形式三: struct 类型标识符 成员名;类型标识符 成员名;. 变量名表列;用无名结构体直接定义 变量只能一次例 struct int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; 说明 结构体类型与结构体变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 结构体类型及变量的作用域与生存期例 struct student int num;char name20;struct date

4、int month;int day;int year;birthday;stu;numnamebirthdaymonthdayyear例 struct date int month;int day;int year;struct student int num;char name20;struct date birthday;stu;numnamebirthdaymonthdayyear结构体变量的初始化 形式一:struct 结构体名 类型标识符 成员名;类型标识符 成员名;. ; struct 结构体名 结构体变量=初始数据;例 struct student int num;char na

5、me20;char sex;int age;char addr30; struct student stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 初始化形式二:struct 结构体名 类型标识符 成员名;类型标识符 成员名;. 结构体变量=初始数据;例 struct student int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 初始化形式三:struct 类型标识符 成员名;类型标识符 成员名;. 结构体变

6、量=初始数据;例 struct int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19, “200 Beijing Road”; 结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员引用方式: 结构体变量名.成员名成员(分量)运算符 优先级: 1 结合性:从左向右例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; stu1.num=10;stu1.score=85

7、.5;stu1.score+=stu2.score;stu1.age+;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; printf(“%d,%s,%c,%d,%f,%sn”,stu1); ()stu1=101,“Wan Lin”,M,19,87.5,“DaLian”; ()例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu1,stu2;nu

8、mnamebirthdaymonthdayyearstu1.birthday.month=12; 可以将一个结构体变量赋值给另一个结构体变量 结构体嵌套时逐级引用(见前面例子)例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; stu2=stu1; ( )例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; if(stu1= =stu2) () 结

9、构体数组 结构体数组的定义 三种形式:形式一:先定义结构 struct student int num;char name20;char sex;int age; struct student stu2;Num(4)Name(20)Sex(1)Age(4) numnamesexagestu0stu129B形式二:结构变量同时定义struct student int num;char name20;char sex;int age;stu2;Num(4)Name(20)Sex(1)Age(4) numnamesexagestu0stu129B形式三:无名结构体struct int num;cha

10、r name20;char sex;int age;stu2;Num(4)Name(20)Sex(1)Age(4) numnamesexagestu0stu129B 结构体数组初始化分行初始化:struct student int num;char name20;char sex;int age; struct student stu =100,“Wang Lin”,M,20,101,“Li Gang”,M,19,110,“Liu Yan”,F,19; 全部初始化时维数可省 回忆多维数组初始化 结构体数组引用引用方式: 结构体数组名下标.成员名struct student int num;ch

11、ar name20;char sex;int age;str3;stu1.age+;strcpy(stu0.name,”ZhaoDa”);例 统计后选人选票struct person char name20;int count; leader3=“Li”,0,“Zhang”,0,”Wang“,0; main() int i,j; char leader_name20;for(i=1;i成员名结构体变量名.成员名表示指向的运算符 优先级: 1 结合方向:从左向右三种基本形式: 结构体变量. 成员名 (*p). 成员名 p-成员名main() struct student long int num

12、;char name20;char sex;float score;stu_1, *p;p=stu_1.num=89101;strcpy(stu_1.name,“Li Lin“);p-sex=M;p-score=89.5;printf(“nNo:%ldnname:%snsex:%cnscore:%fn“,(*p).num, p-name, stu_1.sex,p-score); 例 子结构体变量作为函数参数 用结构体变量的成员作实在参数-值传递 用指向结构体变量或数组的指针作参数-地址传递 用结构体变量作参数-多值传递,效率低用结构体变量作函数参数void func(struct data);

13、 struct data int a, b, c; ; main() struct data arg;arg.a=27; arg.b=3; arg.c=arg.a+arg.b;printf(“arg.a=%d arg.b=%d arg.c=%dn“,arg.a,arg.b,arg.c);printf(“Call Func()n“);func(arg);printf(“arg.a=%d arg.b=%d arg.c=%dn“,arg.a,arg.b,arg.c); void func(struct data parm) printf(“parm.a=%d parm.b=%d parm.c=%dn

14、“,parm.a,parm.b,parm.c);printf(“Process.n“);parm.a=18; parm.b=5; parm.c=parm.a*parm.b;printf(“parm.a=%d parm.b=%d parm.c=%dn“,parm.a,parm.b,parm.c);printf(“Return.n“); arga :27 b: 3 c :30(main) arga :27 b: 3 c :30(main)(func)parma :18 b: 5 c :90arga :27 b: 3 c :30(main) arga :27 b: 3 c :30(main)(fun

15、c)parma :27 b: 3 c :30用结构体指针变量作函数参数struct data int a, b, c; ; main() void func(struct data *parm);struct data arg;arg.a=27; arg.b=3; arg.c=arg.a+arg.b;printf(“arg.a=%d arg.b=%d arg.c=%dn“,arg.a,arg.b,arg.c);printf(“Call Func()n“);func(printf(“arg.a=%d arg.b=%d arg.c=%dn“,arg.a,arg.b,arg.c); void func(struct data *parm)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号