目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1.

Slides:



Advertisements
Similar presentations
电子成绩单项目实现.
Advertisements

第10章 结构体与链表 本章要点: 结构体类型与结构体变量的定义 结构体变量的引用与初始化 结构体数组 链表处理 共用体类型和枚举类型
第一章 C语言概述 计算机公共教学部.
计算机硕士专业基础—C语言 赵海英
4.3 使用二维数组 P 求两个矩阵的和 求方阵对角线上元素之和 显示算术题和学生答题信息
数据结构与算法 数据结构与算法实验
第九章 系 统 安 全 性 9.1 结构体 9.2 结构体型数组  9.3 结构体型指针 9.4 内存的动态分配 9.5 共用体
第7章 结构体、联合体和枚举类型 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
C语言程序设计 第十二章 位运算.
C语言程序设计 第五章 选择结构程序设计.
第一章 C语言概述.
C程序设计 第9章 自定义数据类型 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
C 程序设计实例 1. 问题描述 2. 数据结构 3. 算法分析 4. 参考程序 5. 改进说明.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
C++程序设计 第二讲 清华大学软件学院.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
適用於多選一 可減少if 與 else配對混淆的錯誤.
项目六 用指针优化学生成绩排名 项目要求 项目分析
C程序设计.
If … else 選擇結構 P27.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
结构体和共用体 2 梁春燕 华电信息管理教研室.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
Chap 9 结构 9.1 构建手机通讯录 9.2 结构变量 9.3 结构数组 9.4 结构指针.
STRUCTURE 授課:ANT 日期:2010/5/12.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第九章 结构体和共用体 结构体的定义 结构体的使用 共用体的定义 共用体的使用 主讲:李祥 时间:2015年10月.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
C语言程序设计 李祥.
C 程式設計— 結構 台大資訊工程學系 資訊系統訓練班.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第五章 指针 5.1 指针的概念和定义 5.2 指针运算 5.3 指针和数组 5.4 字符串指针 5.5 指针数组 5.6 指向指针的指针
6.4.1指针与二维数组 1、二维数组结构的分析 设有数组定义为:int a[3][4]; 则有: a表示数组在内存中的首地址。
算法的基本概念.
多维数组与指针 用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 1. 多维数组元素的地址 先回顾多维数组的性质,可以认为二维数组是“数组的数组”,例 : 定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
C++语言程序设计 第二章 C++简单程序设计.
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
第三章 数据类型、运算符与表达式.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C语言程序设计.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
OOP6 結構Struct 黃兆武.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
C语言复习3----指针.
第 二 章 数据类型、运算符与表达式.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
C程序设计.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 类型、对象、运算符和表达式.
#include <iostream.h>
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第七章  数 组.
第十二章 位运算.
目录 12.1 位运算符 12.2 位域(位段) 1.
第18讲 从C到C++ 计算机与通信工程学院.
Introduction to the C Programming Language
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
多重條件選擇敘述
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Introduction to the C Programming Language
安排座位.
C语言基础学习 从外行到入门.
Presentation transcript:

目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1

9.1 结构体类型 1. 结构体类型的定义 结构体类型定义的一般形式: struct 结构体类型名 { 成员变量表列 }; 9.1 结构体类型 1. 结构体类型的定义 结构体类型定义的一般形式: struct 结构体类型名 { 成员变量表列 }; 应注意在括号后的分号是不可少的。成员变量表列由若干个成员变量组成,每个成员变量都是该结构体的一个组成部分。 对每个成员变量也必须作类型声明,其形式为:类型声明符 成员变量名; 结构体类型名和成员变量名的命名应符合标识符的命名规则。 2

9.1 结构体类型 2. 结构体类型变量的定义 1)先定义结构体类型,再定义结构体变量 2)在定义结构体类型的同时定义结构体变量 9.1 结构体类型 2. 结构体类型变量的定义 1)先定义结构体类型,再定义结构体变量 2)在定义结构体类型的同时定义结构体变量 struct 结构体类型名 { 成员变量表列 }结构体类型变量表列; 3)直接定义结构体变量 定义的一般形式为: struct 3

9.1 结构体类型 3. 结构体类型变量的成员变量的表示方法 9.1 结构体类型 3. 结构体类型变量的成员变量的表示方法 在程序中使用结构体类型变量时,除了允许具有相同类型的结构体类型变量相互赋值以外,一般对结构体类型变量的使用,包括赋值、输入、输出、运算等都是通过结构体类型变量的成员变量来实现。 表示结构体类型变量的成员变量一般形式是: 结构体类型变量名.成员变量名 例如:student1.num //即第一个人的学号 如果成员变量本身又是一个结构体类型,则必须逐级找到最低级的成员变量才能使用。例如:person1.birthday.month 表示第一个人出生月份成员变量,可以在程序中单独使用。 4

9.1 结构体类型 4. 结构体类型变量的成员变量的使用方法 9.1 结构体类型 4. 结构体类型变量的成员变量的使用方法 结构体变量的赋值、输入和输出可以通过对其各成员分别进行赋值、输入和输出来实现。结构体变量的赋值就是给其各成员赋值。 【例 9_1】给结构体变量赋值并输出。 #include<stdio.h> void main() { struct stu { int num; char *name; float score; } student1,student2; 5

9.1 结构体类型 4. 结构体类型变量的成员变量的使用方法 student1.num=2012102; 9.1 结构体类型 4. 结构体类型变量的成员变量的使用方法 student1.num=2012102; student1.name="zhang li"; printf("input score\n"); scanf("%f",&student1.score); student2=student1; printf("number=%d\n",student2.num); printf("name=%s\n",student2.name); printf("score=%f\n",student2.score); } 6

9.1 结构体类型 5. 结构体类型变量的初始化及整体赋值 【例9_2】结构体类型变量初始化并整体赋值给另一个结构体变量。 9.1 结构体类型 5. 结构体类型变量的初始化及整体赋值 【例9_2】结构体类型变量初始化并整体赋值给另一个结构体变量。 #include<stdio.h> void main() { struct stu /*定义结构体*/ { int num; char *name; float score; }student2,student1={2012102,"zhang li",88.5}; student2=student1; printf("number=%d\n",student2.num); printf("name=%s\n",student2.name); printf("score=%f\n",student2.score); } 7

9.1 结构体类型 6. 结构体类型数组的定义和使用 定义结构体类型数组的方法和定义结构体类型变量相似,只需定义它为数组类型即可。 9.1 结构体类型 6. 结构体类型数组的定义和使用 定义结构体类型数组的方法和定义结构体类型变量相似,只需定义它为数组类型即可。 对结构体类型数组定义的同时也可以作初始化赋值。例如: struct stu { int num; char *name; float score; }student[3]={{2012101,"li ping",45}, {2012102,"zhang ping",62.5}, {2012103,"he fang",92.5}}; 当对全部元素作初始化赋值时,也可以不给出数组长度。 8

9.1 结构体类型 6. 结构体类型数组的定义和使用 【例9_3】计算学生的平均成绩和不及格的人数。 9.1 结构体类型 6. 结构体类型数组的定义和使用 【例9_3】计算学生的平均成绩和不及格的人数。 #include<stdio.h> struct stu { int num; char *name; float score; } student[3]={{2012101,"li ping",45}, {2012102,"zhang ping",62.5}, {2012103,"he fang",92.5}}; 9

9.1 结构体类型 6. 结构体类型数组的定义和使用 【例9_3】计算学生的平均成绩和不及格的人数。 void main() 9.1 结构体类型 6. 结构体类型数组的定义和使用 【例9_3】计算学生的平均成绩和不及格的人数。 void main() { int i,c=0; float ave,s=0; for(i=0;i<3;i++) { s+=student[i].score; if(student[i].score<60)c+=1; } printf("s=%f\n",s);ave=s/3; printf("average=%f\ncount=%d\n",ave,c); 10

9.2 共用体类型 1. 共用体类型的定义 共用体类型也是一种构造而成的数据类型,在声明和使用之前必须先定义它。 9.2 共用体类型 1. 共用体类型的定义 共用体类型也是一种构造而成的数据类型,在声明和使用之前必须先定义它。 定义共用体类型变量的一般形式为: union 共用体名 { 成员变量表列 }共用体变量表列; 共用体与结构体的定义形式相似,但它们的含义是不同的。结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有其自己的内存单元。而共用体变量所占的内存长度等于最长的成员的长度,所有成员共用同一内存单元。 11

9.2 共用体类型 2. 共用体类型变量的使用 只有先定义了共用体变量才能引用共用体变量中的成员。 9.2 共用体类型 2. 共用体类型变量的使用 只有先定义了共用体变量才能引用共用体变量中的成员。 (1)同一个内存可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一个成员,而不是同时存放多个。 (2)可以对共用体变量初始化,但初始化表中只能有一个常量。 (3)共用体变量中起作用的成员是最后一次被赋值的成员。 (4)共用体变量的地址和它的各成员的地址相同。 (5)不能对共用体变量名赋值,也不能引用变量名。 (6)允许用共用体变量作为函数参数。 (7)共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型定义中,数组也可以作为共用体的成员。 12

9.2 共用体类型 2. 共用体类型变量的使用 【例9_4】有若干个人员的数据,其中有学生和教师。学生的数据包括:姓名、号码、职业、班级。教师的数据包括:姓名、号码、职业、职务。学生和教师的数据项目只有一项不同。现要求把它们放在同一表格中。 #include <stdio.h> struct { int num; char name[10]; char job; union { int clas; char posi [10]; }cate; }p[2]; 13

9.2 共用体类型 2. 共用体类型变量的使用 int main() { int i; for(i=0;i<2;i++) 9.2 共用体类型 2. 共用体类型变量的使用 int main() { int i; for(i=0;i<2;i++) { scanf("%d %c %s",&p[i].num,&p[i].job,&p[i].name); if(p[i].job=='s') scanf("%d",&p[i].cate.clas); else if(p[i].job=='t')scanf("%s",p[i].cate.posi); else printf("Input error!"); } printf("\n"); if (p[i].job == 's') printf("%d %s %c %d\n",p[i].num, p[i].name,p[i].job,p[i].cate.clas); else printf("%d %s %c %d\n",p[i].num,p[i].name, p[i].job,p[i].cate.posi); } 14

9.3 枚举类型 2.枚举类型变量的定义 1)先定义枚举类型后定义枚举类型变量 2)同时定义枚举类型和枚举类型变量 1. 枚举类型的定义 9.3 枚举类型 1. 枚举类型的定义 枚举类型定义的一般形式为: enum 枚举名{枚举值表列}; 在枚举值表列中罗列出所有可用值,这些值也称为枚举元素。 2.枚举类型变量的定义 枚举类型变量也可用以下三种不同的定义方式: 1)先定义枚举类型后定义枚举类型变量 2)同时定义枚举类型和枚举类型变量 enum 枚举类型名{枚举值表列}枚举类型变量表列; 3)直接定义枚举类型变量 enum {枚举值表列}枚举类型变量表列; 15

9.3 枚举类型 1)枚举类型的使用规定 3.枚举类型变量的使用 (1)枚举值是常量,不是变量,所以不能在程序中用赋值语句再对它赋值。 9.3 枚举类型 3.枚举类型变量的使用 1)枚举类型的使用规定 (1)枚举值是常量,不是变量,所以不能在程序中用赋值语句再对它赋值。 (2)枚举类型元素本身由系统定义了一个表示序号的数值,从0开始,顺序定义为0,1、2……。 【例9_5】枚举类型变量的使用。 #include<stdio.h> void main() { enum weekday { sun,mon,tue,wed,thu,fri,sat } a,b; a=sun; b=mon; printf("%d,%d\n",a,b); } 16

9.3 枚举类型 (1)只能把枚举值赋给枚举变量。 2)枚举类型的使用说明 3.枚举类型变量的使用 9.3 枚举类型 3.枚举类型变量的使用 2)枚举类型的使用说明 (1)只能把枚举值赋给枚举变量。 (2)一定要把数值赋给枚举变量,则必须用强制类型转换。 (3)枚举元素不是字符型,使用时不要加单引号或双引号。 【例9_6】 #include<stdio.h> void main() { enum body { a,b,c,d } month[31],j; int i; j=a; for(i=1;i<=30;i++) { month[i]=j; j++; if (j>d) j=a; } 17

9.3 枚举类型 2)枚举类型的使用说明 3.枚举类型变量的使用 { switch(month[i]) 9.3 枚举类型 3.枚举类型变量的使用 2)枚举类型的使用说明 for(i=1;i<=30;i++) { switch(month[i]) { case a:printf(" %2d %c\t",i,'a'); break; case b:printf(" %2d %c\t",i,'b'); break; case c:printf(" %2d %c\t",i,'c'); break; case d:printf(" %2d %c\t",i,'d'); break; default:break; } } printf("\n"); 18

宏定义是由预处理完成的,而typedef则是在编译时完成的,所以,后者更为灵活方便。 宏定义虽然也可表示数据类型,但毕竟只是做字符代换。 19