结构体及其应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
};
❖ 例如:
struct stud { int num; char name[20]; char sex; int age; float score[3]; char address[30]; };
❖ 注意事项:
(1)struct是关键字,标志结构体类型。struct后 面是所定义的结构体类型的名字,结构体名应符 合标识符的命名规则。这里结构体名可以省略, 省略后将成为无名结构体。
(3) 定义无名结构体类型的同时定义结构体变量(即不出现 结构体名)
一般定义形式为:
sБайду номын сангаасruct
{ 成员表列
}变量名表列; 例如:
struct
{
int num;
char name[20];
char sex;
int age;
float score[3];
char address[30];
}student1,student2;
(2)结构体的各个成员用花括号括起来,结构体 成员的定义方式和变量的定义方式一样,成员名 的命名规则和变量相同;各成员之间用分号分隔; 结构体类型的定义以分号结束。
(3)结构体成员的数据类型可以是基本类型的, 也可以是构造类型,如数组或其他结构体类型。
9.2.2 结构体变量的定义及引用
❖ 结构体变量的定义
(1) 先声明结构体类型再定义变量名 例如: struct stud /*定义结构体类型*/
{ int num; char name[20]; char sex; int age; float score[3]; char address[30];
}; struct stud student1,student2; /*定义结构体变量*/ 结构体变量student1和student2中各成员的赋值情况如图所示。
❖ 结构体变量中成员的引用
结构体变量本身不能代表一个特定的值,只 有它的成员才会有特定的值。因此使用结构体变 量时,要引用其成员。结构体变量中成员的引用 形式是:
结构体变量.成员名
例如,结构体变量student1中各个成员引用形式 如下:
student1.num、student1.name、student1.sex、 student1.age、student1.address
❖ 根据本题的情况,用以下形式构造名为student的结构体 类型。
struct student /*student为结构体类型名*/
{ int num; /*学号为int型*/
char name[10]
/*姓名用字符数组*/
float s1,s2,score; /*3个成绩为float型*/
};
❖ struct student是一种结构体类型,它由5个数据 项组成,此处的数据项称为结构体成员或者域。接 下来可以用struct student这个数据类型定义变量,
9.2 结构体类型的使用
一组相关的数据可能是相同类型的, 也可能是不同类型的。为了封装相关的 数据,就需要采用可以包含不同类型成 员的类型来定义这样的数据,这种类型 就是结构体类型。
9.2.1 结构体类型的定义
❖ 定义结构体类型的一般形式为:
struct 结构体类型名 { 类型名1 成员名1; 类型名2 成员名2; …… 类型名1 成员名1;
C语言程序设计
软件教研室
第9章 结构体及其应用
❖ 学习目标
掌握构造类型—结构体类型及其使用
❖ 学习内容
结构体类型及其定义 结构体变量的定义及使用 结构体数组的使用 结构体指针的使用 链表及其基本操作
9.1 一个程序实例
【例9-1】一个学生的信息包括学号、姓名、平时成绩、期末 成绩和总评成绩,其中总评成绩的计算公式为:总评成绩= 平时成绩×30%+期末成绩×70%。根据给定的平时成绩和期 末成绩计算总评成绩,并输出学生的信息。
(2) 定义结构体类型的同时定义结构体变量 这种方法定义的一般形式为:
struct 结构体名 {
成员表列 }变量名表列; 例如,上面的结构体类型struct stud也可以采取以下形式定义: struct stud { int num; char name[20]; char sex; int age; float score[3]; char address[30]; } student1={101,"ghz",'M',18,75.4,89.3,92.5,"xian"},student2; 这里只对变量student1进行了赋初值操作。
student1.score[0]、student1.score[1]、 student1.score[2]
❖ 结构体类型嵌套
以上给出的例子中,结构体成员的类型都是基本类型和数组类 型。实际上,成员的类型可以是任何数据类型。下面给出成员类型 是另一个结构体类型的例子。例如:
/*以下输出该学生信息*/ printf("NO.:%d\n",wang.num); printf("NAME:%s\n",wang.name); printf("s1=%7.2f,s2=%7.2f,score=%7.2f\n\n",wang.s1,wang.s2,wang.score); }
程序输出结果为:
int num; char name[10]; float s1,s2,score; }; main() { struct student wang; /*定义结构体变量*/
/*以下给变量名为wang的学生赋值 */ wang.num=101; strcpy(wang.name,"wanghai"); wang.s1=92.0; wang.s2=87.5; wang.score=wang.s1*0.3+wang.s2*0.7; /*计算总评成绩*/
只有变量才能存储数据。例如,下面语句定义了 一个结构体变量:struct student wang;
❖ 结构体变量中成员的引用形式为:结构体变 量.成员名。比如:wang.num、wang.name、 wang.s1等。结构体成员在程序中的作用和用 法与普通变量相同。
【程序代码】 【程序代码】
#include "stdio.h" #include "string.h" struct student /*定义结构体类型*/ {
相关文档
最新文档