清华大学出版社 TSINGHUA UNIVERSITY PRESS §11.3结构体变量的引用 (1)使用成员运算符引用结构体变量的成员: 结构体变量名.成员名 studentI num=10010; scanf(%d, &student1 num) printf( %od,, studentI num) 注:不能将结构体变量作为整体输入和输出,如 scanf("%d"&student1)t!
§11.3结构体变量的引用 (1)使用成员运算符引用结构体变量的成员: 结构体变量名.成员名 student1.num=10010;scanf(“%d”,&student1.num); printf(“%d”, student1.num); 注:不能将结构体变量作为整体输入和输出,如 scanf(″%d″ ,&student1)错!
(2)使用指针运算符和成员运算符引用结构体变量的成员。如 truct student stu, p=&stu (p).num=10001; scanf("%s"', (*p). name); scanf(%f, p) score) (3)使用指向运算符“→”引用结构体变量的成员。如 struct student stu, *p=&stu p->num=10001; scanf(%s", p->name); scanf(%f, &p->score): printf("age of %oS is %d\n, stul. name, age) (4)将结构体变量作为一个整体进行操作。如 stu2=stul printf( the address of struct student variable stu2 is %x, ,&stu2); struct student stu l, stu2, *p=&stul 【说明】(1)与“->”优先级相同,都高于指针运算符“*”。 (2)“(*p)成员名”、“p>成员名”与“stu成员名”等 价 思考:“(*p)成员名”中括号能省略吗? 语言程序设计(第三版)‖http:/iCcf.tsinghua.edu.cn7
C语言程序设计(第三版) http://ccf.tsinghua.edu.cn 7 (2)使用指针运算符和成员运算符引用结构体变量的成员。如 struct student stu,*p=&stu; (*p).num=10001;scanf(“%s”,(*p).name);scanf(“%f”,&(*p).score); (3)使用指向运算符“->”引用结构体变量的成员。如 struct student stu,*p=&stu; p->num=10001; scanf(“%s”, p->name); scanf(“%f”,&p->score);printf(“age of %s is %d\n”,stu1.name,age); (4)将结构体变量作为一个整体进行操作。如 stu2=stu1; printf(“the address of struct student variable stu2 is %x”, &stu2); struct student stu1,stu2,*p=&stu1; 【说明】(1) “.”与 “->” 优先级相同,都高于指针运算符“*”。 (2) “(*p).成员名”、“p->成员名”与“stu.成员名”等 价 思考: “(*p).成员名”中括号能省略吗?
114结构体变量的初始化: 定义结构体变量的同时为各成员赋值。如 struct student stul=(1001,lisi",M,1988,,103,5801 struct student stu2=(1002, LiPing, F, 1989, 2, 5, 595) struct student stu=(1002, Li Ping",F, 1989) 说明】(1)不初始化则结构体变量各成员的取值是随机的 (2)花括号内初值的顺序、类型要与结构体成员的顺 序和类型一致 语言程序设计(第三版)‖http:/iCcf.tsinghua.edu.cn8
C语言程序设计(第三版) http://ccf.tsinghua.edu.cn 8 11.4结构体变量的初始化: 定义结构体变量的同时为各成员赋值。如: struct student stu1={1001,“lisi",'M',{1988,8,10},580}; struct student stu2={1002,"Li Ping",'F',1989,2,5,595}; struct student stu3={1002,"Li Ping",'F',1989}; 【说明】(1)不初始化则结构体变量各成员的取值是随机的。 (2)花括号内初值的顺序、类型要与结构体成员的顺 序和类型一致
清华大学出版社 TSINGHUA UNIVERSITY PRESS 例110对结构体变量初运行结果 #include <stdio. h> No.10101 void main () name: LiLin I struct student seX: M (long int num; address: Beijing Road char name [20] char sex: char addr [20] }a={10101,” LiLin”,’M’," Beijing road″ };对结构体变量a赋初值 printf("No: %1d\nname: %s\sex: %c\address: %s\n a num, a name, a sex, a addr); J
但不能用以下语句整体读入结构体变量, 例如: scanf(″%d,%s,%c,%d,%f,%s″, &student1); 结构体变量的地址主要用作函数参数, 传递结构体变量的地址。 例11.1 对结构体变量初始化. #include <stdio.h> void main() { struct student {long int num; char name[20]; char sex; char addr[20]; }a={10101,”LiLin”,’M’,″Beijing Road″ }; /* 对结构体变量a赋初值*/ printf(“No.:%ld\nname:%s\nsex:%c\naddress:%s\n ” ,a.num,a.name,a.sex,a.addr); } 运行结果: No.:10101 name:LiLin sex:M address:Beijing Road