当前课程知识点:C语言程序设计 >  第11章 复杂数据类型 >  11.2 定义结构体类型变量 >  定义结构体类型变量

返回《C语言程序设计》慕课在线视频课程列表

定义结构体类型变量在线视频

下一节:结构体变量的引用与初始化

返回《C语言程序设计》慕课在线视频列表

定义结构体类型变量课程教案、知识点、字幕

同学们好

在这一节中

我们将和大家探讨定义了结构体类型之后

定义结构体类型变量的方法

以及结构体变量定义之后

引用和初始化的规则

请同学们牢记形式规则

多使用多练习

为将来链表和树栈图的学习打下良好基础

上一节中只是指定了一个结构体类型

它相当于一个模型

但其中并无具体数据

系统对之也不分配实际内存单元

为了能在程序中使用结构体类型的数据

应当定义结构体类型的变量

并在其中存放具体的数据

可以采取以下三种方法定义结构体类型变量

定义结构体类型变量 三种方式

1

先声明结构体类型

再定义该类型的变量

2

在声明类型的同时定义变量

3

不指定类型名而直接定义结构体类型变量

1.先声明结构体类型再定义变量名

如我们使用以下代码定义类型

定义了结构体类型

struct student以后我们可以用它来定义变量

如图

定义了student1

和student2为struct Student类型的变量

则系统就会给这两个变量运行时分配内存空间

在内存中他们具有struct Student类型的结构如图所示

应当注意

将一个变量定义为标准类型

基本数据类型

与定义为结构体类型

不同之处在于后者不仅要求制定变量为结构体类型

而且要求指定为某一特定的结构体类型

例如 struct student类型

因为可以定义出许许多多种具体的结构体类型

所有要有stuct关键字

还要有结构体类型名

而在定义变量为整型时

则需要指定为int就好了

如果程序规模比较大

往往将对结构体类型的声明

集中放到一个文件以.h为后缀的

头文件中

哪个源文件需用到此结构体

则可用# include命令将该头文件包含到本文件中

这样做便于装配

便于修改

便于使用

因此结构体类型并非只有一种

而是可以设计出许多种结构体类型

各自包含不同的成员

2.在声明类型的同时定义变量

例如

这段代买和第一种方法相同

即先定义struct Student类型的结构体类型

然后定义类型的同时定义了

两个struct Student类型的结构体类型的变量student1

student2

这种形式的定义的一般形式为

struct 结构体名

{ 成员表列 }变量名表列;

3

不指定类型名而直接定义结构体

类型变量

一般形式为

struct { 成员表列 }变量名表列;

即不出现结构体类型名

这种定义的问题就在于只能定义一次变量

关于结构体类型

有几点需要说明

(1)结构体类型与结构体变量是不同的概念

不要混淆

只能对变量赋值

存取或运算

而不能对一个类型赋值

存取运算

在编译时

对类型是不分配空间的

只对变量分配空间

(2) 结构体类型中的成员名可以与程序中的变量名相同

但二者不代表同一对象

例如程序种可以定义一个变量

num和stuct student 种的num是两回事

(3) 对结构体变量中的成员

即域

可以单独使用

它的作用与地位相当于普通变量

结构体成员的引用我们在下一节中再给大家讲解

4

成员也可以是一个结构体变量

如这里先声明一个struct date类型

它代表日期

包含3个成员

month

year

day

而在生命struct student类型时

讲其的birthday成员定义为struct date类型

struct date类型的结构图如下

今天的内容就讲到这里

在这一节中

我们和大家探讨了定义了结构体类型之后

定义结构体类型变量的方法

请同学们课后多练习

认真体会类型和变量的概念

同学们

我们下次课再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

定义结构体类型变量笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。