C语言复习3----结构体.

Slides:



Advertisements
Similar presentations
目 录  第 1 章 C++ 概述  第 2 章 数据类型、运算符和表达式  第 3 章 简单的输入 / 输出  第 4 章 C++ 的流程控制  第 5 章 函数  第 6 章 编译预处理  第 7 章 数组  第 8 章 结构体、共同体和枚举类型  第 9 章 指针和引用  第.
Advertisements

第9章 用户建立的数据类型 公共计算机基础教研部.
程序设计导论 ——第15讲 结构与结构数组.
程序设计导论 结构与结构数组.
第7章 指针 存储地址的变量的类型就是指针类型 能直接对内存地址操作, 实现动态存储管理 容易产生副作用, 初学者常会出错
电子成绩单项目实现.
第10章 结构体与链表 本章要点: 结构体类型与结构体变量的定义 结构体变量的引用与初始化 结构体数组 链表处理 共用体类型和枚举类型
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
大学实用教程 C语言.
第6章 指针 6.1 指针的概念 6.2 变量与指针 6.3 数组与指针 6.4 字符串与指针 6.5 函数与指针 6.6 返回指针值的函数
第14章 c++中的代码重用.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
C程序设计 第9章 自定义数据类型 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
第九章 结构体 主讲教师 :贾月乐 电话:
使用VC++6.0调试程序.
第10章 结构体与共用体 概述 结构体 共用体 枚举类型.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
7.1 结构体类型 7.2 共用体 7.3 枚举类型 7.4 用typedef声明类型
编译原理与技术 类型检查 2018/11/21 《编译原理与技术》-类型检查.
第9章 结构体.
结构体和共用体 2 梁春燕 华电信息管理教研室.
第9章 用户自己建立数据类型 9.1 定义和使用结构体变量 9.2 使用结构体数组 9.3 结构体指针 9.4 用指针处理链表
程序设计专题 第2讲 - 结构 刘新国.
自定义数据类型 潘荣江 山东大学计算机科学与技术学院
程序设计基础.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第九章 结构体和共用体 结构体的定义 结构体的使用 共用体的定义 共用体的使用 主讲:李祥 时间:2015年10月.
走进编程 程序的顺序结构(二).
辅导课程六.
第7讲 结构体与共用体 7.1 结构体 7.2 共用体.
二维数组的指针表示 与复杂的指针例子 专题研讨课之三.
第8章 结 构 体.
第8章 数据封装—结构体 结构体的概述 结构体类型的定义 结构体类型的变量 结构体数组 结构体作为函数的参数 链表.
第8章 结构体、共用体和枚举类型 教学目的: 通过本章的学习,要求了解结构型、链表、共用型和枚举型数据的特点,熟练掌握结构型的定义方法,结构型变量、数组、指针变量的定义、初始化和成员的引用方法;掌握简单链表的基本操作原理和应用;掌握共用型和枚举型的定义方法及对应变量的定义与引用;掌握用户自定义类型的定义和使用。学习本章内容可以为今后学习数据结构中的链表创建和使用打下基础。
第11章 结构体和共用体.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第七章 结构体、共同体和枚举类型.
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
Struct結構 迴圈
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
OOP6 結構Struct 黃兆武.
第十章 结构体与链表 西安工程大学.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第9章 用户自己建立数据类型 C语言提供了一些系统已定义好的数据类型,如int,float,char,用户可以用它们定义变量。
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++大学基础教程 第7章 其它自定义数据类型 北京科技大学 信息基础科学系.
第九章 用户建立的数据类型.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
结构体与共用体 结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体 自定义数据类型 结构体类型定义
本节内容 结构体.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C语言程序设计 第9章 结构体.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
基本知识 数据类型、变量、常量、运算符.
第14讲 结构体和共用体 计算机与通信工程学院.
第八章 结构体和共用体 结构体类型和结构体变量 结构体数组 结构体指针变量 共用体.
顺序结构程序设计 ——关于“字符串”和数值.
Chap 9 结构 9.1 构建学生信息库 9.2 计算学生平均成绩 9.3 学生成绩排序 9.4 修改学生成绩.
本节内容 this指针 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
THE C PROGRAMMING LANGUAGE
安排座位.
Presentation transcript:

C语言复习3----结构体

结构体类型概述 前面章节学过的数组是一组同类型数据的集合。一个数组只能存放同一种类型的数据,不同类型的数据不能放在一个数组。 而结构体由不同的数据类型组成,例如学生的姓名、学生证号、年龄、手机号码等,这就需要结构体数据类型。 结构体不是一种新的数据类型,而是把其它不同的数据类型组合起来,是由其它类型构造出来,因此称为构造类型。

结构体类型 1)结构体由若干个数据项组成,每个数据项称为结构体的一个成员,每个数据项属于一种已有的数据类型。 2)结构体类型是由不同类型的数据项组成的复合类型。 结构体类型的定义格式: struct 结构体类型名 { 数据类型1 成员1名; 数据类型2 成员2名; . 数据类型n 成员n名; }; 成员列表

定义一个学生的结构体 例如定义一个学生的结构体: struct student { int number; char name[15]; char sex; int age; } 成员又称为成员变量,是结构体中若干个数据类型,每个成员须标明数据类型。

构体类型的嵌套 struct date { int year; int month; int day; }; struct person int number; char name[20]; char sex; struct date birthday; 结构体成员可以是任意的数据类型,还可以是其它的结构体类型,这时称为结构体类型的嵌套。

结构体变量的定义 在定义了结构体之后,结构体变量可以用三种方式定义。 方式1: 先声明结构体类型,再定义变量名,分别定义。 struct student { int number; char name[15]; char sex; int age; } 用上面定义的结构体struct student来定义结构体变量 struct student stu1,stu2; 定义了stu1和stu2为struct student类型的变量。 定义结构体变量之后,C系统就为它们分配内存单元。

方式2:结构体类型和结构体变量名一起定义 struct student { int number; char name[15]; char sex; int age; }stu1,stu2;

方式3:省略结构体类型名,直接定义结构体变量 struct { int number; char name[15]; char sex; int age; }stu1,stu2;

结构体变量的初始化 定义了结构体变量之后,就可对变量赋值或存取。 对于结构体和结构体变量名分别定义,可以这样来初始化: struct student stu1={001,'david','M',25,}; 结构体和结构体变量名一起定义,可以这样来初始化: struct student { int number; char name[15]; char sex; int age; }stu1={001,'david','M',25,};

printf("%d,%s,%c,%d\n",stu1)--------错误 结构体变量的引用 定义了结构体变量之后,就可以在程序中引用它了。 能够引用的对象有两个:结构体变量名代表变量整体,成员名代表变量的各个成员。引用时注意: 1)不能将一个结构体变量作为一个整体进行输入和输出,如: printf("%d,%s,%c,%d\n",stu1)--------错误 只能对结构体的成员变量输入输出。引用结构体变量中的成员变量的方式为: 结构体变量名.成员变量 如: stu1.name

成员本身又是一个结构体 struct date { int year; int month; int day; }; strcut stu { int number; char name[15]; char sex; struct date birthday; /*成员本身又是一个结构体*/ }student; 2)如果成员本身又是一个结构体,要一级一级找到最低的成员变量,只能对最低的成员进行赋值或运算。 可以这样来引用:student.birthday.month

3)结构体变量可以整体赋值。例如stu1=stu2,把变量stu2的所有成员的值一一赋值给变量stu1,但是这两个结构体变量的类型必须完全相同。 4)结构体变量占据的一段内存的首地址称为该结构体变量的地址,其每个成员占据的若干个单元的首地址称为该成员的地址。

结构体数组 以上定义的存放学生信息的结构体类型struct student,可以定义1个变量stu,但是只能存放stu的1个学生的信息。如果为了能放10个学生信息就要定义10个结构体变量,不现实。 为了处理多个学生信息,就要用到结构体数组。 对于结构体数组来说,其中每一个单元都是一个结构体类型的数据。

结构体数组的定义 结构体数组的定义也可以采用以下3种方式之一: 1)定义结构体类型,然后通过结构体类型来定义结构体数组 struct stu { long num; char name[10]; char sex; int age; }; struct stu students[20] 这里结构体数组students有20个单元,每一个单元都是一个struct stu类型。

2)结构体类型与结构体数组同时定义 struct stu { long num; char name[10]; char sex; int age; }students[20]

3)直接定义结构体数组 而不用定义结构体类型名 struct { long num; char name[10]; char sex; int age; }students[20]

结构体数组的初始化 结构体数组的初始化,每个元素的初值是由{ }括起来的1组数据,在定义结构体数组时加在后面。 例如: struct syu students[2] ={{001,"David",'M',25}, {002,"Lily",'W',23}};

结构体数组的引用 结构体数组元素不能作为一个整体进行输入或输出,引用结构体数组的成员同普通数组的成员一样。 例如:student[0].num。

结构体和指针 结构体数组占据一段内存,结构体数组名代表这段内存的首地址,我们可以把这结构体数组的首地址赋给一个指针,这个指针就是指向结构体类型数据的指针。

指向结构体变量的指针 先定义一个结构体stu,再定义一个指向结构体的指针p,例如 : struct stu *p; 定义结构体变量students ,然后让这个指针p指向这个变量,例如: struct stu students ; p=&students; 这个指针p就指向结构体变量students。就可以把students.num表示为(*p).num。 可以把(*p).num用指向运算符来表示,表示为: p->num。

引用成员变量的三种方式: 1)结构体变量.成员变量 2)(*p).成员变量 3)p->成员变量 其中3)指向运算符的优先级是最高的。

指向结构体数组的指针 指向结构体数组的指针与指向普通数组的指针完全一样。 与普通数组一样,p++并不是指针指向内存的下一个位置,而是指向结构体数组的下一个单元。

指向结构体的指针作为函数参数 程序设计经常需要把结构体类型的数据传递给一个函数。把一个结构体类型的变量或数组传给函数,可以有三种方式: 1)用结构体成员变量作为函数的参数,是值传递方式。 2)用结构体变量作为实参,也是传值方式。 3)用指向结构体变量的指针作为实参,把结构体变量的地址传递给形参。

共同体 使几种不同类型的变量占用同一段内存的结构,称为“共同体”类型结构。 例如: union data 定义共同体类型的形式为: { 成员列表 }变量列表 例如: union data { int i; char ch; float f; }; union data a,b,c; //先声明一个共同体data //再定义变量a,b,c

共同体与结构体的不同 结构体变量所占内存是各成员占的内存长度之和。 而共同体变量所占内存长度是其中最长的成员的长度。 同一段内存段虽然可以存放几种不同类型的成员,但不能同时存放,起作用的成员是最后一次存放的成员,在存入一个新的成员后,原有的成员就被冲掉。 各成员的地址都是同一地址。

用typedef定义类型 除了C的标准类型(int,char,float,double,long)外,以及自己定义的结构体、共同体、指针等,还可以用typedef声明新的类型名来代替已有的类型名。例如: typedef int INTEGER; typedef float REAL; 指定用INTEGER来代替int,用REAL来代替float。

用typedef声明结构体类型 typedef struct date { int month; int day; int year; 声明新类型名DATE,它代表上面指定的结构类型体,但只是个别名,不是结构变量,还不能直接使用。这时就可以用DATE来定义结构体变量: DATE birthday DATE *p;