printf( input age scanf(%od", &s age); getchar; printf("input tel: ) gets(s tel); printf( input address: ) gets(s address); printf(" name age tel address); printf("in%5s%/6d%010s %0-40s", S name, S age, s tel, saddress); 分析 *结构体类型 address list放在函数体外定义,其作用范围为 本程序文件内 *结构体变量的输入输出需逐个访问基本类型的成员,引用 方法与同类型的变量、数组相同
printf(" input age:"); scanf("%d",&s.age);getchar(); printf("input tel:"); gets(s.tel); printf("input address:"); gets(s.address); printf(" name age tel address"); printf("\n%5s%6d%10s %-40s", s.name, s.age, s.tel, s.address); } 分析: *结构体类型address_list 放在函数体外定义,其作用范围为 本程序文件内。 * 结构体变量的输入输出需逐个访问基本类型的成员,引用 方法与同类型的变量、数组相同
■例113定义一结构体类型,包含工人的工资信息:编号、姓 名、工资。并定义变量存放两人的数据,然后交换,输出交 换前后的信息 程序l113c #include stdio. h" main i struct salary list f char no[10] char name] float salary, struct salary list z, x10,li ming", 2000) y={"12"," wang yan",2500} 咪结构体变量的初始化,给出各成员的数据并用{}括起来, 各成员之间用逗号分开*
◼ 例11.3 定义一结构体类型,包含工人的工资信息:编号、姓 名、工资。并定义变量存放两人的数据,然后交换,输出交 换前后的信息。 ◼ 程序l11_3.c #include "stdio.h" main() {struct salary_list {char no[10]; char name[30]; float salary; } ; struct salary_list z,x={"10","li ming",2000}, y={"12","wang yan",2500}; /*结构体变量的初始化,给出各成员的数据并用{}括起来, 各成员之间用逗号分开*/
printf("n no name salary") printf("nx: %0-5S%0-6S%10.2f, x no, x name, x salary) printf("ny: %0-5S%0-6S%10.2f,y no, y name, y salary) 2xyy,交换两个结构体变量 printf( "nafter exchange printf("nx: %-5S%0-6S%10.2f, x no, x name, x salary); printf("ny: %0-5S%0-6S%10.2f,y no, y name, y salary) 特别提示:同的结构体变量可以整体赋值,即可 以将一个结构体变量整体赋给相同类型的另一个结 构体变量
printf("\n no name salary"); printf("\nx:%-5s%-6s%10.2f",x.no,x.name,x.salary); printf("\ny:%-5s%-6s%10.2f",y.no,y.name,y.salary); z=x; x=y; y=z; /*交换两个结构体变量*/ printf("\nafter exchange:"); printf("\nx:%-5s%-6s%10.2f",x.no,x.name,x.salary); printf("\ny:%-5s%-6s%10.2f",y.no,y.name,y.salary); } 特别提示:同类型的结构体变量可以整体赋值,即可 以将一个结构体变量整体赋给相同类型的另一个结 构体变量
说明一、定义结构体变量 ■定义结构体变量的方法有三种,(经常用第一种): :先定义结构体类型,再定义结构体变量。 如: struct teacher t1,t2;(例11) 方法二:定义结构体类型的同时定义结构体变量(例1.2)。又如 struct course math f long no no char name 301; 3 math, english; 若以后还需用到此结构体类型,定义方法同1 name struct course chemic 方法三:格式同方法(二),其中类型名 course省略,缺点是该 类型无法再次引用 *结构体变量的存储:系统按结构体类型中备成员的类型给变量 分配存情空间,如上图:
说明一、定义结构体变量 ◼ 定义结构体变量的方法有三种,(经常用第一种): 方法一:先定义结构体类型,再定义结构体变量。 如:struct teacher t1,t2; (例11.1) 方法二:定义结构体类型的同时定义结构体变量(例11.2) 。 又如: struct course math { long no; 4B char name[30]; } math,english; 30B 若以后还需用到此结构体类型,定义方法同1: struct course chemic; 方法三:格式同方法(二),其中类型名course 省略,缺点是该 类型无法再次引用。 *结构体变量的存储:系统按结构体类型中各成员的类型给变量 分配存储空间。如上图: no name
说明二、结构体变量的引用 ■结构体变量定义后,可以分两个层次引用 *访问结构体变量的成 *引用整个结构体变量 1、使用成员运算符“.”引用结构体变量的成员, “”的优先级仅次于括号。 如例11、11.2、11.3中的 person name, person age x no, s salary 等成员的赋值、输入、输出。 person age++ 等价于( person age )++ 对结构体变量中的成员的操作与基本类型的变量完全相同。 注意:当结构体类型嵌套定义时,应逐级访问。 dustruct teacher 2 pp; pp birthday year=1999 少量之间可以率体赋值。如例11.3中交 换两个结构体变量的值
说明二、结构体变量的引用 ◼ 结构体变量定义后,可以分两个层次引用: *访问结构体变量的成员。 *引用整个结构体变量。 ◼ 1、使用成员运算符“.”引用结构体变量的成员, “.”的优先级仅次于括号。 如例11.1、11.2、11.3中的person.name, person.age x.no ,s,salary 等成员的赋值、 输入、输出。 person.age++等价于(person.age)++ 对结构体变量中的成员的操作与基本类型的变量完全相同。 注意:当结构体类型嵌套定义时,应逐级访问。 如struct teacher_2 pp; pp.birthday.year=1999; 2、相同类型的结构体变量之间可以整体赋值。如例11.3中交 换两个结构体变量的值