C语言程序设计精品讲义第7章 结构体与共同体
C语言程序设计教案 结构体与共用体
printf(“No.
name
sex
age\n”);
for(p=stu;p<stu+3;p++)
printf(“%5d%-20s%2c%4d\n”,p->num,p->name,
p->sex,p->age);}
三、用指针处理链表
链表是一种常见的数据结构,是动态地进行存储分配的一种结构。
用数组存放数据时,必须事先定义固定的长度。比如有的班级有
例 对候选人得票的统计程序。设有三个候选人,每次输入一个得 票的候选人的名字,要求最后输出各人得票结果。
程序如下: #include <stdio.h> struct person {char name[20];
int count; }leader[3]={“li”,0,“zhang”,0,“fun”,0}; main() {int i,j;char leader_name[20]; for(i=1;i<=10;i++) {scanf(“%s”, leader_name);
┄ char addr[30]; }; Struct student student[10];
2.结构体数组的初始化 其初始化和数组的初始化相似。 3.结构体数组的应用举例
结构体数组 和数值型数 组不同之处 在于每个数 组元素都是 一个结构体 类型的数据。
定义了一个 student,其 元素为 Struct student 类型 数据,数组中 有 10 个元素。
{ int month;
先声明一个
int day; int year; }
Struct date 类型,然后在 Struct
c程序设计第七章知识点
c程序设计第七章知识点C程序设计是计算机科学和技术领域中非常重要的一门课程,而第七章作为其中的一部分,涵盖了许多关键的知识点。
本文将对C程序设计第七章的知识点进行介绍和讨论。
一、结构体在C语言中,结构体是一种自定义的数据类型,它能够将不同类型的数据组合在一起,形成一个新的数据类型。
结构体由多个成员组成,每个成员可以是不同的数据类型,比如整型、字符型、浮点型等。
结构体的定义方式如下:```cstruct 结构体名{数据类型成员名1;数据类型成员名2;// ...};```结构体的成员可以通过`.`操作符来访问和修改,比如`结构体名.成员名`。
结构体的应用广泛,常用于创建复杂的数据结构,如链表、树等。
二、共用体共用体是一种特殊的数据类型,它允许不同的成员共享同一块内存空间。
共用体的定义方式与结构体类似,如下所示:```cunion 共用体名{数据类型成员名1;数据类型成员名2;// ...};```共用体的成员在内存中占用相同的空间,成员之间的修改会相互影响。
共用体可以用于节省内存空间,但需要注意成员的使用顺序和类型。
三、枚举枚举是一种特殊的数据类型,它可以定义一组具有名称的常量。
枚举常量可以在程序中代替数字,提高可读性和可维护性。
枚举的定义方式如下:```cenum 枚举名{枚举常量1,枚举常量2,// ...};```在程序中使用枚举常量时,可以直接使用其名称,无需使用具体的数值。
枚举常量默认从0开始递增,但也可以手动指定初始值。
四、指针与结构体指针是C语言的重要组成部分,结合结构体可以实现更灵活的数据操作。
通过指针,我们可以直接访问和修改结构体的成员,而无需复制整个结构体。
指针与结构体的使用方式如下:```cstruct 结构体名 *指针名;```通过将指针与结构体关联,可以使用指针来访问和修改结构体的成员,比如`指针名->成员名`。
指针与结构体的结合使用是C语言中常见的操作方式,可以提升程序的效率和灵活性。
C程序设计(第四版)第7章结构体与共用体
7.1.1
结构体类型的定义
结构体在说明和使用之前,必须先由用 户自己定义。结构体定义的一般形式如下: struct 结构体名 { 成员类型说明符 成员项1; 成员类型说明符 成员项2; …… 成员类型说明符 成员项n; };
其中: 1、struct是C语言中定义结构体的关键字。 2、成员类型说明符是说明每个成员项的数 据类型,可以是基本数据类型,也可以是数组 类型,还可以是另一个已定义的结构体类型。 3、成员名可以和程序中的变量名相同,两 者不代表同一对象。 4、要注意,在结构体定义中的右括号后应 该有分号。
7.1.6
指向结构体的指针
一个结构体类型的数据在内存中都占据一定 的存储空间,我们可以定义一个指针来指向该 结构体类型的数据,该指针变量称为指向结构 体的指针,简称之为结构体指针。我们可以通 过结构体指针来访问结构体类型的数据,如结 构体变量、结构体数组。指向结构体的指针变 量说明形式如下: struct 结构体类型名 *结构体指针变量名;
main() { struct student stu1; struct student *p; p=&stu1; stu1.num=50201001; gets(); stu1.score=89.5;
printf(“No:%ld\nName:%s\nScore:%4.1f\n”,stu1 .num,,stu1.score); printf(“No:%ld\nName:%s\nScore:%4.1f\n”,(*p). num,(*p).name,(*p).score);
3、结构体数组应用举例 【例7-2】现有三个候选人(每个候选人的ID 号分别是1、2、3),选举人投票进行选举, 编写程序统计出每个候选人的得票结果。 程序如下: #define NUM 30 #include <stdio.h> struct elector { int id; char name[20]; int count;
C语言程序设计(第7章结构体与共用体)
C语言程序设计(第7章结构体与共用体)7.1 结构体类型变量的定义和引用在上面描述的各种登记表中,让我们仔细观察一下住宿表、成绩表、通讯地址等。
住宿表由下面的项目构成:这些登记表用C提供的结构体类型描述如下:住宿表:struct accommod{char name[20]; /*姓名*/char sex; /*性别*/char job[40]; /*职业*/int age; /*年龄*/long number; /*身份证号码*/} ;成绩表:struct score{char grade[20]; /* 班级*/long number; /* 学号*/char name[20]; /*姓名*/float os; /*操作系统*/float datastru; /* 数据结构*/float compnet; /* 计算机网络*/} ;通讯地址表:struct addr{char name[20];char department[30];/* 部门*/char address[30]; /*住址*/long box; /* 邮编*/long phone; /* 电话号码*/char email[30]; /* Email */};这一系列对不同登记表的数据结构的描述类型称为结构体类型。
由于不同的问题有不同的数据成员,也就是说有不同描述的结构体类型。
我们也可以理解为结构体类型根据所针对的问题其成员是不同的,可以有任意多的结构体类型描述。
下面给出C对结构体类型的定义形式:struct 结构体名{成员项表列;};有了结构体类型,我们就可以定义结构体类型变量,以对不同变量的各成员进行引用。
7.1.1 结构体类型变量的定义结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共计有三种形式,分别介绍如下:1) 先定义结构体类型,再定义结构体类型变量:struct stu / *定义学生结构体类型* /{char name[20]; /* 学生姓名*/char sex; /* 性别*/long num; /*学号*/float score[3]; /* 三科考试成绩*/};struct stu student1,student2;/* 定义结构体类型变量*/struct stu student3,student4;用此结构体类型,可以定义更多的该结构体类型变量。
C语言结构体与共同体
C语言结构体与共同体C语言中结构体和共同体是两种用于组织和管理数据的重要概念。
它们可以帮助程序员更有效地管理和操作数据,提高程序的可读性和可维护性。
一、结构体(Structures)结构体是一种由不同类型的数据成员组成的数据类型,它允许程序员将不同类型的数据组织在一起并使用一个名称来引用它们。
结构体可以包含各种数据类型,例如整数、字符、数组或甚至其他结构体。
结构体的定义通过使用关键字struct来实现。
例如,下面的代码定义了一个名为Person的结构体,其中包含姓名、年龄和性别这三个成员:```cstruct Personchar name[50];int age;char gender[10];};```结构体定义可以在程序的任何地方,通常在函数外部定义,使得它在整个程序中都可见。
结构体的创建和初始化可以使用以下格式:```cstruct Person p1; // 创建名为p1的结构体变量struct Person p2 = {"John", 25, "Male"}; // 创建名为p2的结构体变量并初始化其成员```结构体成员可以通过`.`操作符来访问,例如:```cprintf("Name: %s\n", );```结构体可以作为函数的参数传递,也可以作为函数的返回值。
通过传递结构体作为参数,可以避免传递多个参数,提供了一种有效地传递多个相关数据的方法。
例如,下面的代码演示了一个函数,该函数接受一个名为p的Person结构体作为参数,并打印出其成员的值:```cvoid printPerson(struct Person p)printf("Name: %s\n", );printf("Age: %d\n", p.age);printf("Gender: %s\n", p.gender);```二、共同体(Unions)共同体是一种特殊类型的结构体,它允许不同类型的成员共享同一块内存空间。
C语言程序设计基础讲解第7章(结构体)PPT课件
7.1 结构体数据类型
5
结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整 体-------自定义数据类型
– 结构体类型定义
struct [结构体名]
Байду номын сангаас
合法标识符
{
可省:无名结构体
类型标识符 成员名;
struct是关 键字, };
类型标识符 成员名; …………….
成员类型可以是 基本型或构造型
定义结构体类型的同时定义结构体变量
一般形式:
struct 结构体名
例 struct student { int num;
{ 类型标识符 成员名; 类型标识符 成员名;
……………. }变量名表列;
char name[20];
char sex;
int age;
float score;
char addr[30];
1
程序设计基础I
第七章 结构体与共用体
2
整体概况
+ 概况1
您的内容打在这里,或者通过复制您的文本后。
概况2
+ 您的内容打在这里,或者通过复制您的文本后。
概况3
+ 您的内容打在这里,或者通过复制您的文本后。
第七章 结构体和共用体
3
7.1结构体数据类型 7.2共用体数据类型 7.3枚举类型 7.4自定义数据类型
char name[2s0tr];ucctha结r 构n体am名e[2变0量]; 名表列;
char sex;
char sex;
int age;
int age;
float score; float score;
C语言中的结构体和共用体(联合体)
C语言中的结构体和共用体(联合体)/c-pointer-array/在C 语言中,结构体(struct)是一个或多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组织在一个名字之下。
由于结构体将一组相关变量看作一个单元而不是各自独立的实体,因此结构体有助于组织复杂的数据,特别是在大型的程序中。
共用体(union),也称为联合体,是用于(在不同时刻)保存不同类型和长度的变量,它提供了一种方式,以在单块存储区中管理不同类型的数据。
今天,我们来介绍一下C 语言中结构体和共用体的相关概念和使用。
结构体 / struct结构体的定义声明一个结构体类型的一般形式为:struct 结构体名 {成员列表};其中,成员列表中对各成员都应进行类型声明,即:类型名成员名;例如,我们需要在程序中记录一个学生(student)的数据,包括学号(num)、姓名(name)、性别(sex)、年龄(age)、成绩(score)、地址(addr)等,如下图所示:如果要表示图中的数据结构,但C 语言并没有提供这种现成的数据类型,因此我们需要用定义一种结构体类型来表示。
truct student {int num;char name[20];char sex;int age;float score;char addr[30];};上述定义了一个新的结构体类型 struct student(注意,struct 是声明结构体类型时所必须使用的关键及,不能省略),它向编译系统声明,这是一个“结构体类型”,它包括 num、name、sex、age、score、addr 等不同类型的数据项。
应当说,这里的 struct student 是一个类型名,它与系统提供的标准类型(如 int、char、float、double 等)具有同样的作用,都可以用来定义变量的类型。
结构体变量前面只是声明了一个结构体类型,它相当于一个模型,但其中并无具体的数据,编译系统对其也不分配实际的内存单元。
C++课件 第七章 结构体、共同体和枚举
总结
我们深入学习了C++中的结构体、共同体和枚举,并了解了它们的定义、使用和区别。通过此章的学习,我们 掌握了更多编程的技巧和灵活性。
练习题
Question 1
如何定义一个包含姓名、年龄和分数的结构体?
Question 2
请解释什么是枚举类型,它与结构体的区别是什么?
成员的访问和赋值
学习如何通过结构体变量访问和赋值结构体的成员。
结构体数组与共同体
结构体数组
掌握如何定义和使用结构体数组,处理多个结构体 对象的同时。
共ห้องสมุดไป่ตู้体
学习共通体的定义和使用,可以在同一内存地址存 储不同类型的数据。
枚举类型
1
定义和使用
了解如何定义和使用枚举类型,使用符
枚举成员
2
号常量表示一组相关的常量值。
学习如何使用枚举成员,为常量赋予更
加直观的语义。
3
枚举的好处
了解枚举类型在代码编写和代码可读性 方面的优势。
结构体、共同体和枚举的区别和联系
1 区别
详细探讨结构体、共同体 和枚举之间的差异,如内 存分配方式和使用场景。
2 联系
强调结构体、共同体和枚 举的共同点,如都是用于 数据类型的封装和组织。
3 灵活性和应用
参考资料
C++结构体和共同体
此篇文章说明了C++中如何定义和使用结构体和 共同体。
C++枚举类型
了解C++中枚举类型的定义和学习,学习枚举的 使用场景。
C++课件 第七章 结构体、 共同体和枚举
VC++程序设计 -第七章结构体、共同体和枚举类型
int id_no; int eng, phy, math; float ave; } stu1, stu2;
C++程序设计教程-第7章结构体与共用体
C++程序设计
湖南大学
杜四春、银红霞
在定义了结构体变量后,就可以用不同的赋值方 法对结构体变量的每个成员赋值。例如:
strcpy(,”Zhang San”);
worker1.age=26;
strcpy(worker1.phone,”1234567”);
worker1.sex=’m’;
char addr[20];
}stu[3];
C++程序设计
湖南大学
杜四春、银红霞
3. 直接定义结构体数组
结构体数组的定义形式如下:
struct
//没有结构体名
{ 成员表列; }数组名[元素个数];
例如: struct {
char name[20];
char sex;
int age;
char addr[20];
C++程序设计
湖南大学
杜四春、银红霞
1. 先定义结构体类型,再用它定义结构体数组。
结构体数组的定义形式如下:
struct 结构体名 {
例如: struct student
成员表列;
{
}; struct 结构体名
char name[20]; char sex; int age;
char addr[20];
结构体数组初始化的一般形式是:
struct 结构体名
{ 成员表列;
}; struct 结构体名 数组名[元素个数]={初始数据表};
C++程序设计
湖南大学
杜四春、银红霞
或者:
struct 结构体名
{
成员表列;
}数组名[元素个数]={初始数据表}; 在对结构体数组进行初始化时,方括号[ ]中元素
C语言结构体、共同体和用户定义类型
C语言结构体、共同体和用户定义类型C语言结构体、共同体和用户定义类型引导语:结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
以下是店铺分享给大家的C语言结构体、共同体和用户定义类型,欢迎大家阅读学习!1.1 结构体与共用体类型数据的定义方法和引用方法1.结构体类型数据的定义方法:可以采用下面三种方法来定义:(1)先定义结构体类型再定义变量名先定义一个结构体类型,一般形式为:struct 结构体名 {成员列表};(2)在定义类型的同时定义变量:一般形式为:struct 结构体名{成员列表}变量名列表;(3)直接定义结构类型变量:一般形式:struct{成员列表}变量名列表;即不出现结构体名。
2.结构体类型变量的引用:在定义了结构体变量后,可以采用下列方法引用结构体类型的变量:结构体变量名.成员名这里″.″是成员(分量)运算符,它在所有的运算符中优先级最高。
3.共用体类型变量的定义形式为:union共用体名{成员列表}变量列表;4.共用体变量的引用:可以用下面的形式引用共用体变量:共用体变量名.成员名1.2 用指针和结构体构成链表,单向链表的`建立、输出、删除与插入1.链表是一种常用的重要的数据结构,它是动态地进行存储分配的一种结构。
2.所谓建立链表是指从无到有地建立起一个链表,即一个一个地输入各结点数据,并建立起前后相链的关系。
3.所谓输出链表就是将链表各结点的数据依次输出。
4.所谓删除链表事实上就是删除链表中的某个结点。
5.所谓插入链表就是在链表中某个位置插入一个或几个结点。
下载全文。
C 程序设计教程第7章
7.3.1 枚举类型变量的定义与初始化
可以在定义枚举类型的同时定义枚举类型变量并初始化。
例如:
enum Fruit{APPLE,ORANGE,PEAR,GRAPE,PEACH}f=PEACH; //定义枚举变量f
};
枚举元素是常量,其本身是有值的,如果枚举常量在定义时 没有指定其对应的值,系统将按定义时的顺序自动为它们赋值。
例如:
enum Fruit{APPLE=1,ORANGE=2,PEAR=3,GRAPE=4,PEACH=5}; enum Fruit{APPLE=4,ORANGE=0,PEAR,GRAPE,PEACH};
结构体变量名.成员名
例如:
cout<<birthday1.year;
//输出结构体变量birthday1的成员year的值
birthday1.month++;
//结构体变量birthday1的成员month的值加1
temp=birthday1.year-birthday2.year;
//birthday1的成员year的值与birthday2的成员year的值相减
例如:
struct date { int year; int month; int day; }birthday1,birthday2; date *p; p=&birthday1; p->month=5;
//定义指向结构体类型date的指针p //将结构体变量的起始地址赋值给指针p //通过指针引用结构体变量的成员,并为其赋值
在定义结构体类型的同时定义变量 struct 结构体类型名 { 成员类型1 成员名1; 成员类型2 成员名2; … 成员类型n 成员名n; }变量名1,变量名2,…,变量名n;
C语言结构体与共同体
C语言结构体与共同体结构体与共同体C语言本章要点:掌握结构和联合类型数据的定义方法和引用方法; 2. 了解枚举类型数据的定义方法和引用方法。
1.C语言11.1 概述有时,需将不同类型的数据组合成一个有机的整体,以便于引用。
这些数据是相互联系的。
如一个学生的有关信息:num ***** name Li min sex M age 18 addr Dalian可采用结构体数据结构描述上述信息。
C语言例如:是类型,不是变量名定义一个结构体类型struct student {int num; char name; char sex; int age; char addr; };的一般形式为:struct 结构体名{成员表列};对各成员都要进行类型说明;成员名定名规则与变量名同。
C语言11.2 定义结构体类型变量的方法方法一:先定义结构体类型再定义变量名struct student {int num; 不能只指定一个变char name; 量为“struct型”而不定义studet1和指定结构体名char sex; sudent2为int age; struct student char addr; 类型变量};struct student student1, student2;C语言有时,可用符号常量代表一个结构体类型,如:#define ***** struct student ***** {int num; 这样,可直接用***** char name; 定义变量,如:char sex; ***** student1, student2; int age; 此时,不必再写关键字struct char addr; };C语言方法二:在定义类型的同时定义变量,如:struct student {int num; char name; char sex; int age; char addr; }student1, student2;一般形式是:struct 结构体名{ 成员表列}变量名表列;C语言方法三:直接定义结构类型变量。
C课件第七章结构体共同体和枚举
当定义改变成: enum string { x1, x2=0, x3=50, x4 }x; 则x1=0, x2=0, x3=50, x4=51
2024/2/4
Visual C++程序设计
24
注意: 枚举中每个成员(标识符)结束符是“,”, 不是
color c=Blue; 此时, 枚举变量c实际上是7,即
cout<<c<<endl; 的结果为7而不是Blue! 但:
color c=7;r
应该:color c=(color)(7); a 可以:int a=c; 或 int a=Blue; a
2024/2/4
Visual C++程序设计
26
例:定义一个描述三种颜色的枚举类型 (Red,Green,Blue),输出这三种颜色的全部排列组合。
“;”, 最后一个成员可省略“,”。
初始化时可以赋负数, 以后的标识符仍依次加1。
枚举元素可以作为整型常量使用,可以直接输出。 如:enum color{Red,Green,Blue};
cout<<Green<<endl; //此时结果为1
可以用枚举类型说明枚举类型变量,而且也有与结 构体类型类似的三种说明方法。
也可在定义结构的同时定义结构变量,如:
struct student
{ int No;
char name[8]; float score;
2024/2/4
}stu1, stu2, stu[30];
Visual C++程序设计
5
与基本数据类型类似,在定义结构体类型的 变量时,也可对该变量进行初始化,其方法与 对数组的初始化方法类似,即采用用花括号括 起来的初始值表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
struct student s1 ;
s1.num = 99010101 ;
= “wang hai” ; s1.score = 99 ;
结构变量。
mprintp ( &ss11 ) ;
指向结构的指针。
}
void mprintp (pv )
⒌结构数组
结构变量也可以构造成数组,称为结构数组。每个数组元素都 是一个结构变量,都含有结构成员项。它们在内存中的地址是连续 的。
数组的说明:
struct 结构名 结构数组名 [常量表达式] ;
struct student{
long num ; char name[20] ; float score ; } stud[3] ;
结构和联合的操作分为三个步骤:
⑴根据需要定义结构或联合类型; ⑵通过定义的类型说明变量、数组、指针; ⑶引用变量、数组元素和指针指向的对象。
7.1 结 构 体
⒈结构类型的定义
格式:
用标识符命名的结构类型名。
struct 结构名{ type 成员项1 ; type 成员项2 ;
结构标志。…
结构类型中所含的成员 项及其类型。
⑴传递一个结构指针(效率高)。 ⑵传递一个结构变量(效率低)。
#include<stdio.h>
void mprintp (struct student )* ;) ;
struct student { long num ;char *name ;float score;} ;
void main ( )
说明: ⑴注意类型和变量的区别。 ⑵成员项可单独使用。wang.age=20 ⑶结构的成员项也可以是结构变量。
struct doc{ char name[20] ; struct birth age ; float sal ; };
struct birth{ int year; int mon; int day;
⒈共用体类型的定义 格式:
Union 共用体名{ type 成员项 1 ; type 成员项 2 ; … type 成员项 n ;
};
union exam{ int a ; float b ; char c ; };
⒉共用体变量的说明和引用
可以用共用体类型说明:共用体变量、共用体数组、指向共用
体的指针。
定义结构,说明数组并 初始化。
}ws [ ]={ {101 , “Fang” , “Shanghai” } ,
{102 , “Tan” , “Bejing” } ,
{103 , “Wang” , “Hefei” }
};
void main ( void)
{ int i;
struct sam *pws ;
{
printf(“%ld\n%s\n%5.1f\n” , sp-s>vn.unmum,,sspv-.>nnaammee, s,vs.psc->osrecore ) ;
}
7.2 共用体(union)
概念:不同数据类型的集合;每个成员项共用一段内存空间; 某一时刻只能对一个“活的active”成员项操作;
三 void main (void)
个 候 选 人 的
循 环 输 入 统
{ int i ,j ,numb ; for (i=0 ; i<NUMBER ; i++ ) { scanf (“%d” ,&numb ) ; if (numb<4&&numb>0)
票计
数 。
票 数
lead[numb-1] .count ++ ; else
i
int i ;
char ch[2] ;
}x;
x.i = 24897 ;/* i:0x6141*/
printf (“i=%xH\n” , x.i);
printf (“ch[0]=%xH,ch[1]=%xH\n” , x.ch[0] , x.ch[1] );
printf (“ch[0]=%c , ch[1] = %c\n” , x.ch[0] , x.ch[1] ) ;
结构体变量的每个成员项有独立的内存单元, 而共用体变量的成员项以最大的成员项开辟单元 后,所有成员项共用单元。
union exam{ int a ;
x
float b ;
char c ;
}x ;
a
b c c
a b
举例:
#include <stdio.h>
void main (void)
{
union exam{
C 语言可以通过 typedef 语句,定义自己命名的数据类型。实 际上是给 C 类型重新起个名字。
typedef语句的格式: typedef type 标识符;
引用方式:
C语言的类型名。 用户定义类型名。
⑴基本类型
typedef int INTEGER ; INTEGER a , b ;
⑵数组
typedef char STRING[41] ; STRING a , b ; char a[41] , b[41] ;
⑴枚举元素如果不赋值,自动取0~n-1整数值; ⑵在定义时,可以对某个枚举元素赋值,其后的元素按此值, 自动加一递增。
⒉ 枚举变量的说明和引用 enum color col1 , col2 ;
枚举变量只能取该类型中的一个元素。 col1=red ; col2=(enum color ) 2 ;
7.4 用户定义类型
};
wang,zhang,liu;
struct student wang,zhang,liu; ⑵定义结构类型时说明变量
用struct student 类型说明 三个变量。
⑶无名结构方式说明变量
struct{ long num ; char name[20] ; int age ; char add[30] ; float score ; }wang,zhang,liu;
⒉结构变量的说明
定义结构只是确定该结构类型的名称及其成员项的组成及成员 项的类型。必须由定义的结构类型说明结构变量,才开辟相应的内 存空间以供使用。
结构变量的说明方式: ⑴定义后说明
struct student{ long num ; char name[20] ; int age ; char add[30] ; float score ;
说明:
={{99010101 , “Wang” ,67.5} , {99010102 , “Zhao” ,78.5} , {99010103 , “Fang” , 98.5} } ;
⑴三个结构数组元素都含有student 的成员项。 ⑵结构数组名stud,代表结构数组的首地址。 ⑶外部和静态结构数组在说明时可以初始化。
};
结构doc中的成员项是 一个birth的结构变量!
⒊结构变量的引用
结构变量都是以成员项作为引用单位,引用方式:
结构变量名.成员项名
说明: 结构变量的成员项与普通变量有相同的性质。
⒋结构体变量的初始化 结构变量可以在说明时赋初值,称为初始化。
wang.score=100;
struct student{ long num ; char *name; char sex[3] ; int age ; float score ; char addr [30] ; } wang = {99010101 , “王五” , “男” , 20 , 90.5 , “上海” } ;
type 成员项n ; };
结构的定义确定了如下两点:
struct student {
⑴定义结构类型,确定结构中的成员项的名称及类型。lcohnagr
num ; name[20] ;
⑵指明该结构类型的变量在内存中的组织形式。 int age ;
char add[30] ;
float score ;
};
第七章 结构体与共用体
结构和联合的概念
在数据中,经常有一些既有联系,类型又不同的数据,并且它
们之间又有一定的相关性,需要一起处理。 如:学生基本档案的数据
字段: 学号 姓名 性别 地址 分数
类型: long char char char
float
C语言允许用户按自己的需要将不同的基本类型构造成一种特 殊类型,即结构和联合。
结构指针的应用:
⑴先说明结构指针 struct student *p,stu1;
⑵指针指向同类型的结构变量或数组。p=&stu1;
⑶通过指针引用指针指向变量的成员项,引用方式为:
方式一:(*p).成员项名 方式二: p->成员项名
结构指针主要用于对结构数组操作。
struct studoc{ int iNum;
}
x
0x41 0x61
ch[0] ch[1]
CHAP7EX4
7.3 枚 举 类 型
概念:有限状态的集合,以整型值代表。如:月份,星期。 ⒈枚举类型的定义 enum 枚举类型名{ 枚举元素表 } ; enum day{sun,mon,tue,wed,thv,fri,sat} ;
enum color{red,yellow,blue} ; 说明:
pws = ws ; for ( i=0 ; i<3 ; i++ , pws++ )
CHAP7EX2
printf (“%-9d%-14s%-20s\n说” 明, p结ws构->指nu针m。,
pws->name ,
pws->addr ) ;
指针指向结构数组。
}
通过指针引用成员项 。