第十一章结构体与共用体
第十一章 结构体与共用体
第一节结构体数据类型的定义与引用 般形式: struct结构体名 类型说明成员1; 成类型说明成员2 类型说明成员n; 不能省 略
第一节 结构体数据类型的定义与引用 一般形式: struct 结构体名 { 成员列表 } ; 类型说明 成员1; 类型说明 成员2; … … 类型说明 成员n; 不能省 略
例: struct student int number;/*学号*/ char name[31];/*姓名*/ short age;/*年龄*/ char sex;/米性别*/ int grade;/*年级*/ char address[10];/*家庭地址*/
例: struct student { int number; char name[31]; short age; char sex; int grade; char address[10]; }; /*学号*/ /*姓名*/ /*年龄*/ /*性别*/ /*年级*/ /*家庭地址*/
1.结构体类型变量的定义和引用 student1 student2 方法1先定义结构,再说明结构变量 struct student 0270520102705202 I int number chap l in mary char name [311 20 short age; char sex. M int grade F2 char address[10]; shanghai nanjing struct student student1 student2
1.结构体类型变量的定义和引用 方法1 先定义结构,再说明结构变量 struct student { int number; char name[31]; short age; char sex; int grade; char address[10]; }; struct student student1,student2; 02705201 chaplin 20 M 2 shanghai 02705202 mary 19 F 2 nanjing student1 student2
方法2在定义结构体的同时说明结构变量 struct student struct结构体名 int number 类型说明成员1; char name [311 类型说明成员2; short age; char sex 类型说明成员n; int grade }变量名列表; char address [10] 1 student1, student2
方法2 在定义结构体的同时说明结构变量 struct 结构体名 { 类型说明 成员1; 类型说明 成员2; … … 类型说明 成员n; } 变量名列表; struct student { int number; char name[31]; short age; char sex; int grade; char address[10]; } student1,student2;
方法3直接说明结构变量 struct struct I int number 类型说明成员1; char name 31] 类型说明成员2; short age char sex 类型说明成员n; int grade }变量名列表; char address [10] I student1, student2
方法3 直接说明结构变量 struct { 类型说明 成员1; 类型说明 成员2; … … 类型说明 成员n; } 变量名列表; struct student { int number; char name[31]; short age; char sex; int grade; char address[10]; } student1,student2;
注意: 1)结构体变量可以分为局部变量和全局变量 2)结构体类型的成员可以又是一个构造类型, 即构成了嵌套的结构 如:一个地址可以由邮编和住址组成: struct address int code: char add[10] home number struct student code add [10] int number struct address home
2)结构体类型的成员可以又是一个构造类型, 即构成了嵌套的结构 注意: 如: 一个地址可以由邮编和住址组成: struct address { int code; char add[10]; }; struct student { int number; struct address home; }; number home code add[10] 1)结构体变量可以分为局部变量和全局变量
2.结构体类型数据的引用 规则 1)不能把一个结构体变量进行输入和输出 如: printf(“%d,%s,%,%,%d,%s”, student1) 引用方式:结构体变量名成员名 如: printf(“%d,%s,%d,%c,%d,%s student 1 number student1 name studentI age student 1. sex student grade student1 address)
规则: 1)不能把一个结构体变量进行输入和输出 2.结构体类型数据的引用 如: printf(“%d,%s,%d,%c,%d,%s”,student1); 引用方式:结构体变量名.成员名 如: printf(“%d,%s,%d,%c,%d,%s” , student1.number, student1.name, student1.age, student1.sex student1.grade, student1.address);
规则 2)若成员本身又是一个结构,则必须逐级找到 最低级的成员才能使用 如:前面提到的嵌套结构 student3.home.code即 student3的邮编 student3.home.add即 student3的住址 3)结构体变量成员,与相同类型的普通变量并 无区别,可以像不同变量一样参与各种运算
规则: 2)若成员本身又是一个结构,则必须逐级找到 最低级的成员才能使用 如: 前面提到的嵌套结构 student3.home.code 即student3的邮编 student3.home.add 即student3的住址 3)结构体变量成员,与相同类型的普通变量并 无区别,可以像不同变量一样参与各种运算
例 student1 number=02705201 sum=student1. numbertstudent2 number student age++ strcpy( student3home.add,“ nanJing”);
例: student1.number=02705201; sum=student1.number+student2.number; student1.age++; strcpy(student3.home.add,“nanjing”);