《数学函数结构体精品文稿.ppt》由会员分享,可在线阅读,更多相关《数学函数结构体精品文稿.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数学函数结构体第1页,本讲稿共20页例 struct student int num;char name20;char sex;int age;float score;char addr30;namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节.结构型类型定义描述结构的组织形式,不分配内存第2页,本讲稿共20页例例 2 struct book charISBN20;char name40;float price;例例 3 struct person int num;char name20;float score10;float average;struct da
2、ta .;结构型第3页,本讲稿共20页例例 struct student int num;char name20;char sex;int age;float score;char addr30;struct student stu1,stu2;8.2 结构型变量的定义结构型变量的定义(1)先定义结构型,再定义变量先定义结构型,再定义变量v一般形式:一般形式:struct 结构型名结构型名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.;struct 结构型名结构型名 变量名表列变量名表列;第4页,本讲稿共20页(2)定义结构型的同时定义变量定义结构型的同时定义
3、变量一般形式:一般形式:struct 结构型名结构型名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.变量名表列变量名表列;例例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;第5页,本讲稿共20页(3)定义无名结构型的同时定义变量定义无名结构型的同时定义变量一般形式:一般形式:struct 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.变量名表列变量名表列;例例 struct int num;char n
4、ame20;char sex;int age;float score;char addr30;stu1,stu2;用用无名结构型无名结构型直接定义直接定义变量变量只能一次只能一次第6页,本讲稿共20页说明说明v结构型类型与结构型变量概念不同结构型类型与结构型变量概念不同l类型类型:不分配内存不分配内存;变量变量:分配内存分配内存l类型类型:不能赋值、存取、运算不能赋值、存取、运算;变量变量:可以可以v结构型可嵌套结构型可嵌套v结构型成员名与程序中变量名可相同,不会混淆结构型成员名与程序中变量名可相同,不会混淆v结构型类型及变量的作用域与生存期结构型类型及变量的作用域与生存期例例 struct
5、date int month;int day;int year;struct student int num;char name20;struct date birthday;stu;numnamebirthdaymonthdayyear例例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu;numnamebirthdaymonthdayyear第7页,本讲稿共20页8.3 结构型变量的引用引用规则v 结构型变量不能整体引用,只能引用变量成员v可以将一个结构型变量赋值给另
6、一个结构型变量变量赋值给另一个结构型变量v结构型嵌套时逐级引用成员(分量)运算符优先级:1结合性:从左向右引用方式:结构型变量名.成员名例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age+;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,
7、stu2;printf(“%d,%s,%c,%d,%f,%sn”,stu1);()stu1=101,“Wan Lin”,M,19,87.5,“DaLian”;()例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;stu2=stu1;()例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu1,stu2;numnamebirthdaymonthdayy
8、earstu1.birthday.month=12;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;if(stu1=stu2).()第8页,本讲稿共20页8.4 结构型变量的初始化形式一:struct 结构型名结构型名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.;struct 结构型名结构型名 结构型变量结构型变量=初始数据初始数据;例 struct student int num;char name20;char sex;int
9、age;char addr30;struct student stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;第9页,本讲稿共20页形式二:形式二:struct 结构型名结构型名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.结构型变量结构型变量=初始数据初始数据;例例 struct student int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;第10页,本讲稿共20页形式三:形式三:
10、struct 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.结构型变量结构型变量=初始数据初始数据;例例 struct int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;第11页,本讲稿共20页8.4 结构型数组结构型数组的定义 形式一:struct student int num;char name20;char sex;int age;struct student stu2;numnamesexagenumnamesexag
11、estu0stu125B第12页,本讲稿共20页结构型数组初始化结构型数组初始化例例 struct int num;char name20;char sex;int age;stu=,;顺序初始化顺序初始化: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;char name20;char sex;int age;stu=,;分行初始化分
12、行初始化: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;char name20;char sex;int age;str3;stu1.age+;strcpy(stu0.name,”ZhaoDa”);第13页
13、,本讲稿共20页8.5 结构型指针指向结构型变量的指针v定义形式:struct 结构型名 *结构型指针名;例 struct student *p;v使用结构型指针变量引用成员形式存放结构型变量在内存的起始地址numnamesexagestupstruct student int num;char name20;char sex;int age;stu;struct student *p=&stu;(*结构型指针名).成员名结构型指针名-成员名结构型变量名.成员名指向运算符优先级:1结合方向:从左向右例 指向结构型的指针变量main()struct student long int num;ch
14、ar name20;char sex;float score;stu_1,*p;p=&stu_1;stu_1.num=89101;strcpy(stu_1.name,Li Lin);p-sex=M;p-score=88.5;printf(nNo:%ldnname:%snsex:%cnscore:%fn,(*p).num,p-name,stu_1.sex,p-score);例 int n;int *p=&n;*p=10;n=10struct student stu1;struct student *p=&stu1;stu1.num=101;(*p).num=101第14页,本讲稿共20页指向结构
15、型数组的指针例 指向结构型数组的指针struct student int num;char name20;char sex;int age;stu3=10101,Li Lin,M,18,10102,Zhang Fun,M,19,10104,Wang Min,F,20;main()struct student*p;for(p=stu;pnum,p-name,p-sex,p-age);numnamesexagestu0pstu1stu2p+1第15页,本讲稿共20页用指向结构型的指针作函数参数v用结构型变量的成员作参数-值传递v用指向结构型变量或数组的指针作参数-地址传递v用结构型变量作参数-多值
16、传递,效率低第16页,本讲稿共20页struct data int a,b,c;main()void func(struct data);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
17、=%d parm.b=%d parm.c=%dn,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:27b:3c:30(main)(func)parma:27b:3c:30copyarga:27b:3c:30(main)(func)parma:18b:5c:90arga:27b:3c:30(main)arga:27b:3c:
18、30(main)例 用结构型变量作函数参数第17页,本讲稿共20页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(&arg);printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);void func(struct d
19、ata *parm)printf(parm-a=%d parm-b=%d parm-c=%dn,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:18b:5c:90(main)arga:27b:3c:30(main)例 用结构型指针变量作函数参数arga:27b:3c:30(main)(func)parm*arga:18b:
20、5c:90(main)(func)parm*第18页,本讲稿共20页 类型定义类型定义形式:形式:typedef type name;例 typedef int INTEGER;例 typedef float REAL;类型定义后,与已有类型一样使用例 INTEGER a,b,c;REAL f1,f2;int a,b,c;float f1,f2;8.6 用typedef定义类型-用自定义名字为用自定义名字为已有已有数据类型命名数据类型命名用户定义的用户定义的类型名类型名typedef是是关键字关键字已有数据类型名已有数据类型名第19页,本讲稿共20页typedef定义类型步骤按定义变量方法先写
21、出定义体 如 int i;将变量名换成新类型名 如 int INTEGER;最前面加typedef 如 typedef int INTEGER;用新类型名定义变量 如 INTEGER i,j;例 定义数组类型v int a100;v int ARRAY100;v typedef int ARRAY100;v ARRAY a,b,c;int a100,b100,c100;例 定义指针类型v char *str;v char *STRING;v typedef char *STRING;vSTRING p,s10;char *p;char *s10;例 定义函数指针类型v int (*p)();v
22、 int (*POWER)();v typedef int (*POWER)();vPOWER p1,p2;int (*p1)(),(*p2)();例 定义结构型类型v struct date int month;int day;int year;d;例 定义结构型类型v struct date int month;int day;int year;DATE;例 定义结构型类型vtypedef struct date int month;int day;int year;DATE;例 定义结构型类型v DATE birthday,*p;struct date int month;int day;int year;birthday,*p;类型定义可嵌套例 typedef struct club char name20;int size;int year;GROUP;typedef GROUP *PG;PG pclub;GROUP *pclub;struct club *pclub;GROUP为结构型类型PG为指向GROUP的指针类型第20页,本讲稿共20页