C面向对象chap结构体共同体和枚举类型

合集下载

嵌入式C程序设计基础-第6章-结构体、共用体、枚举类型

嵌入式C程序设计基础-第6章-结构体、共用体、枚举类型

C语言程序设计
第6章 结构体、共用体、枚举类型
【学习内容】
【学习目标】
6.1 结构体类型概述
1.掌握结构体类型的Байду номын сангаас明方法;
6.2 结构体变量
2.掌握结构体变量的定义、初始化及成员
6.3 结构体数组
引用方法;
6.4 结构体指针
3.掌握结构体数组及应用;
6.5 共用体类型
4.掌握结构体指针及应用;
6.6 枚举类型
本书可作为高等院校电子信息类、计算机类、自动化类、机电 类专业的C语言教材,也可供从事嵌入式系统与物联网技术开发的 工程技术人员参考。
C语言程序设计
教学内容:
第1章:C语言语法基础 第2章:C程序设计基础 第3章:数组 第4章:函数 第5章:指针 第6章:结构体、共用体、枚举类型 第7章:文件 第8章:嵌入式技术基础实践方法
【例6.1】结构体变量的初始化和引用。
C语言程序设计
6.3 结构体数组
6.3.1一定个义结构结体构变体量数可组以存的放方一法名学生的信息,而结构体数组可以存放多名学生的
信息,结构体数组中的每个元素都是一个结构体类型的数据。
定义的结构体数组stu,共有5个元素,stu[0]~stu[4]。每个数组元素都是struct Student结构体类型的。
这种方式,声明类型和定义变量一起 进行,能直接看到结构体的结构,较为直 观,在编写小程序时常用此方法。
C语言程序设计
6.2 结构体变量
6.2.1 定义结构体变量的方法
3、不指定结构体名而直接定义结构体变量
这种方式,由于没有结构体名,因此 不能再用此结构体类型去定义其他变量, 实际应用较少。
C语言程序设计

C语言程序设计精品讲义第7章 结构体与共同体

C语言程序设计精品讲义第7章 结构体与共同体

{
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 ⑶结构的成员项也可以是结构变量。

C语言数据结构-第9章 结构体共用体与枚举

C语言数据结构-第9章 结构体共用体与枚举
"Guang Zhou","13901000002"}, {"Gu YuPing",18,"F","2019010003",2019,5,5,"Han",
"Shang Hai","13901000003"}}; int i; for(i=0;i<3;i++) { printf("%s,%d,%s,%s,",stud[i].name,stud[i].age,stud[i].sex,stud[i].xh); printf("%d,%d,%d,",stud[i].birthday.year,stud[i].birthday.month, stud[i].birthday.day); printf("%s,%s,%s\n",stud[i].nation,stud[i].address,stud[i].tel); } }
成员运算符“.”的优先级最高,在表达式中的结构体变量成员不 需要加括号。例如:
wang.age++;
相当于
(wang.age)++;
注意
13
结构体变量的成员名可以相同,但必须处在不同的层次。 例如:
sturct student { int no;
char name[20]; struct { int no; char classname[20]; }class; struct { int no; char groupname[20]; }group; }wang;
定义结构体类型名的同时定义结构体数组,例如:
struct student{…} stud[50];

C语言程序设计(电子)课程第六章 联合共用体与枚举类型

C语言程序设计(电子)课程第六章 联合共用体与枚举类型
第11章 共用体和枚举类型
构造数据类型,也叫联合体
用途:使几个不同类型的变量共占一段 内存(相互覆盖)
共用体类型定义 定义形式:
union 共用体名
{ 类型标识符 成员名; 类型标识符 成员名;
例 union data
……………. };
{ int i; char ch; i
类型定义不分配内存
float f; ch
例 typedef float REAL;
说明:
类型定义后in,t 与a已,b,有c; 类型一样使用
1.typedef 没有创造新数据类型
float f1,f2;
2.typedef 是定义类型,不能定义变量
3.typedef 与 define 不同
define 预编译时处理 简单字符置换
typedef 编译时处理 为已有类型命名
ch0=%c,ch1=%c\n", x.ch[0],x.ch[1],x.ch[0],x.ch[1]); }
运行结果: i=60501 ch0=101,ch1=141 ch0=A,ch1=a
高字节 低字节 01100001 01000001
01000001 01100001
ch[0] ch[1]
– 结构体与共用体
char high; }; union u_tag { struct w_tag byte_acc;
int word_acc; }u_acc;
高字节 低字节 00010010 00110100 0x1234
00110100
low
10 11111111 0x12ff
char name[10]; char sex; char job; union { int class;

C5_结构体-共用体-枚举

C5_结构体-共用体-枚举

一、结构体结构体是一种复合数据类型,是不同类型数据的集合,在C语言中并没有给出具体的结构图类型,但是给出了定义结构体的方法。

所以通常把结构体也称为自定义类型。

1.1结构体的定义struct <结构体标签名>{类型结构体成员名;类型结构体成员名;……};例如:struct student {int sno;int age;char name[30];};在程序中用struct student 来表示该结构体的类型。

1.2结构体变量的定义1.2.1常规定义struct student {int sno;char name[30];float score;};struct student std1;//st1是结构体变量1.2.2与类型同时定义struct student {int sno;char name[30];float score;} std2; //st2是结构体变量1.2.3直接定义struct {int sno;char name[30];float score;} std3;//st3是结构体变量1.3结构体变量的初始化1.3.1完全初始化按照成员的先后顺序依次给每一个成员赋值。

struct student st1 = {1001,"张飞",98.9};1.3.2部分初始化按照成员的先后顺序依次给前若干个成员赋值。

struct student st1 = {1001,"张飞"};1.3.3指定成员初始化不按顺序给某些成员赋值struct student st1 = {.name="关羽", .score=100};1.4结构体变量的使用1.4.1 赋值与数组类似,不能整体赋值相同类型的两个结构体变量之间可以相互赋值struct student st;st = {1001,"张飞",98.9}; //错误定义时可以完全初始化,之后就不能整体赋值了。

c语言结构体与共同体

c语言结构体与共同体

struct date {int month,day,year;};
struct student { int num; char name[20]; char sex; int age; struct date birthday; char addr[30]; }student1,student2;
struct student { long number; char name[20]; char sex; int age; float score; char addr[30];}; struct student stu[3];
结构体数组的物理含义:
表示实体(或记录)的个数。
结构体数组的初始化
4、要点:
方法一: struct student { int number; char name[20]; char sex; int age; float score; char addr[30]; }student1,student2;
方法二: struct student { int number; char name[20]; char sex; int age; float score; char addr[30]; }; struct student student1,student2;
student1
student2 struct student所占存储空间的 大小为:
各成员变量所占存储单元字节数 之和。sizeof(student)
结构体类型变量的引用
一、原则:通过结构体的成员来引用结构体变量。 二、成员的引用方法为:结构体变量名.成员名 三、要点: 1.结构体变量不能整体输入输出,只能对它的成员进行操作。 如:student1.num; 2.如果成员本身又是一个结构体类型,则要使用若干个成员运算符, 逐级找到最底层的成员。 如:student1.birthday.day 3.成员变量可以象一般的变量一样进行各种运算,只是在运算时要 加上“.”运算符。 4.可以引用成员的地址。

第9章 结构体、共用体和枚举类型

第9章 结构体、共用体和枚举类型
第9章 结构体、共用体和枚举类型
9.1 结构体类型与结构体变量 9.2 结构体数组 9.3 向函数传递结构体型数据 9.4 链表 9.5 共用体 9.6 枚举类型 9.7 用户自定义类型

9.1 结构体类型与结构体变量
• 结构体类型的定义
–概述:
• 建立单链表的主要步骤为:
– 生成只含有头结点的空链表; – 然后读取数据信息,生成新结点,将数据存放于新结点中, 插入新结点到单链表中 – 重复第二步,直到输入结束。 根据新结点插入到链表的位置的不同,建立链表的方式, 分为在表尾插入的方法和在表头插入的方法。 •表尾插入: 例9.6 •表头插入: 例9.7
• 共用体变量的定义
–用已定义的共用体类型去定义共用体变量 –定义共用体类型的同时定义变量: –定义无名共用体类型的同时定义变量:
• 共用体变量的引用
–引用方式:共用体变量名.成员名 共用体变量名. 共用体变量名 –说明: 对于共用体变量,只能引用它的成员,而不能引用整个 共用体变量。若共用体的成员是构造类型的,则需要逐级引 用至最低级的成员。 –能通过定义指向共用体的指针变量来引用共用体变量。
在实际应用中,一组相关的数据可能是不同类型的。C语 言提供了包含不同类型成员的类型来定义这样的数据,这 种类型就是结构体类型 结构体类型。 结构体类型
– 定义形式:
struct 结构体名 类型名1 成员名1 {类型名1 成员名1; 类型名2 成员名2 类型名2 成员名2; …… 类型名n 成员名n 类型名n 成员名n; };
• 举例
例9.11 上一页
9.6 枚举类型
• 枚举类型的定义–定义来自式:enum 枚举类型名{枚举常量1,枚举常量2,……,枚举常量n}; •

C语言结构体,枚举,联合体详解

C语言结构体,枚举,联合体详解

C语⾔结构体,枚举,联合体详解⽬录1.什么是结构体、枚举、联合体2.定义结构体2.1 包含结构体成员变量、variable2.2 tag、结构体成员变量2.3 ⽤结构体声名变量2.4 ⽤typedef 创建新类型2.5 两个结构体相互包含2.6 结构体变量初始化2.7 结构体指针3.枚举3.1 定义⽅式3.2 为什么⽤枚举3.3 枚举变量的定义3.4 实例3.5 枚举实际⽤途4.联合体4.1 与结构体区别4.2 定义总结1.什么是结构体、枚举、联合体结构体(struct)是由⼀系列具有相同类型或不同类型的数据项构成的数据集合,这些数据项称为结构体的成员。

如下⾯的student结构体包含三个成员,分别是name、num、age。

枚举(enum)是C语⾔的⼀种特殊类型。

当我们在编程中遇到定义⼀些固定长度或范围的数值时,可以考虑使⽤枚举类型。

使⽤枚举可以让我们的程序可读性更强、看起来更加直观。

举个例⼦,如果我们在编程中需要使⽤数字06分别表⽰星期⽇星期六,程序的可读性就不⾼,我们需要翻⼿册或者看程序注释才能知道每个数字具体代表什么意思。

如果我们使⽤枚举呢,基本上不需要看注释或⼿册就可知晓其⼤意。

联合体是⼀种结构。

它的所有成员相对于基地址的偏移量都是0。

此结构空间要⼤到⾜够容纳最宽的成员。

其对其⽅式适合其中所有成员。

123456// 创建结构体struct student{char *name; // 学⽣名字int num; // 学⽣学号intage; // 学⽣年龄};2.定义结构体12struct tag{ 成员变量...}variable;通常,tag 、结构体成员变量、variable 这3个部分⾄少要出现2个2.1 包含结构体成员变量、variable1234struct {char name[100];int age;}s1;//s1相当于对这个结构体声明了⼀个变量,可以在程序中直接调⽤s1相当于声明的全局变量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档