当前课程知识点:数据结构 >  第0章 预备知识 >  0.1变量、类型和表达式 >  0.1变量、类型和表达式

返回《数据结构》慕课在线视频课程列表

0.1变量、类型和表达式在线视频

下一节:0.2 函数

返回《数据结构》慕课在线视频列表

0.1变量、类型和表达式课程教案、知识点、字幕

同学们,大家好

我是云南大学信息学院的教师孔兵。

在开始教材内容之前

我们增加一章预备知识

就叫第0章吧,我们一起从零开始

走向程序设计的星辰大海

这一章节的主要目标是

解决后续课程中会遇到的

C语言程序设计中语法方面的问题

帮助同学们读懂程序

首先讨论变量和类型

在程序设计语言中我们都学过变量

一般来说,我们通过声明变量存储程序中要处理的数据

变量都有数据类型

变量必须在声明以后才能引用

比如我们声明两个整型变量a和b

后面可以用它们来存放2个整型数

在此,我们要强调的是

变量的本质是内存中的一块存储空间

数据类型呢,它的本质是对存储空间大小的一个约定

我们在图中直观地看一下

假设底板是内存空间,所谓声明整型变量a

它的含义是要求分配一块长度为4个字节的存储空间

用来存放一个整数,图中是从120这个地址开始的4个字节

为了使用方便,把这块空间和一个名字对应起来

这样呢,我们就可以通过这个名字来引用这个变量

但是,一定要记住变量的本质就是那块存储空间

这一点对我们后面理解指针

理解结构体的操作非常重要

数据类型的本质是对存储空间大小的一个约定

当我们在进行该类型变量声明的时候

也就是说要求分配这样大小的一块存储空间

声明一个整型变量,就是要求分配4个字节的存储空间

这里顺便说一句

因为计算机本身的内存地址表述起来比较麻烦

我们在课程当中,就用一个整数来表示计算机内存当中的一个地址

下面我们来看和数据类型有关的一个内容

C语言可以使用 typedef 关键字

为一个已经定义的数据类型

另外起一个名字

在教材当中,有三种使用的情况

第1种是给一个基本类型另起一个名字

比如说int

通过typedef int integer这样的定义方式

给这个基本数据类型起了另外一个类型名叫integer

有了这样的定义后,integer和int的作用完全一样了

可以用它来声明整型变量

第2行中,用typedef给int起了另外一个名字,status

同样的道理,status实际上也是整型

在后面教材中大家会看到

很多函数的返回值类型是status

这里想强调的是

现在虽然return返回的是一个整型数

但是这个整型数有一定含义

返回的整型数表示这个函数执行的一个状态

一般是1,表示函数执行顺利

0,表示函数执行过程中发生了问题

第2种情况是我们构造的一个结构体类型

它包含三个成员name ,number,score

使用typedef给这个构造类型另外起了个类型名叫student

有了这样类型名以后

就可以用它声明变量

比如说student stu1,stu2

这就是两个上述定义的结构体的变量

后面的这个st前面带了一个*

st也是一个类型名,什么样的类型呢

这里通过typedef

我们定义了一个指向上述结构体的指针类型的名字

就是说它是一个指针类型的名字

是一个类型名,通过st这个类型名我们也可以声明变量

比如说p和q

声明以后

p和q就是两个指向上述定义结构体的两个指针

第3种情况,如果不看typedef,只看后半部分

我们知道这是在定义一个包含20个整型数的数组

count是数组名

但是前面加上typedef以后呢

count不再是一个数组

它变成了一个数组类型的名字

是一个类型名

现在如果我们用count来声明变量

比如说a和b的话。那么这里的a,b是什么呢

这里的a、b都是包含20个整型数的数组

最后,提醒一下

typedef 只是为已有或者说

已定义数据类型取了一个新类型名

它本身不能定义新的数据类型

好了,同学们

我们现在已经讲解完变量和类型的相关内容

下面呢我们讨论一下运算符和表达式

在程序设计语言中,表达式是操作符

操作数和标点符号组成的一个序列

这样的一个序列呢说明了一个计算的过程

这个计算过程最终的结果是能得到一个值

能得到一个值是表达式最重要的一个特征

在C语言中有两类表达式

一类称为算术表达式,它的特点是运算结果是一个数值

比如说我们用算术运算符乘、除、加、减和求余等

加上操作数,遵循一定的运算规则

我们就可以计算得到一个数值

这类运算呢是我们比较熟悉的

c语言中还有一个自加和自减运算

就是连续的两个加号或者两个减号

我们以自加为例,运算符出现的位置不同

又可以把自加分为前加和后加

那么我们要注意它们之间的区别

例如,i++和++i

如果i++或是++i单独成为一个语句的话

这时前加和后加实际上没有任何的区别

但是当他们出现在一个表达式中的话

那么二者的区别就有了

例如,初始i=5,下面的两个赋值语句

x=i++;和x=++i就不同了

赋值语句等号右边是一个表达式

要计算一个值

如果是后加的话是说先把本身的值

作用到表达式的运算当中去,然后再做自加

这一次自加对本次计算没有什么影响

所以x赋值i++,x的值是5;如果是前加的话

是先做自加

然后再把加的结果作用到表达式的运算中去

那么这次自加就会对本次表达式的计算结果产生影响了

所以x赋值++i时,x的值呢就是6

另一类表达式称为关系表示式

这类表达式涉及的运算符可以分为两种

关系运算符和逻辑运算符

其中关系运算符有6个

大于、大于等于、小于

小于等于、等于、不等于

关系运算符都是2目运算符

有左右操作数

提醒大家的是

关系运算符两边只要是可比较的数据类型的变量和值

那么都可以作为左右操作数

但是,不是什么类型的数都能进行比较

逻辑运算符有3个,和,或,非

前两个是2目运算符

左右操作数要求必须是逻辑值

也就是1或者0

对于和来说,如果左右操作数都是1

则结果是1,其它情况结果是0

对或来说,左右操作数都是0

则结果是0,其它情况呢都为1

最后一个非是单目运算,只有右操作数

1非以后是0,0非以后是1

用关系和逻辑运算符我们可以组合成关系表达式

它也有表达式的特点

就是说它最终计算的结果一定是一个值

只是在这里,它会是一个逻辑值

也就是1或者0

我们用这个值来控制程序的流向

如在条件和循环语句中

还有一个运算呢要提一下

就是求字节运算sizeof

它只有一个参数

这个参数一般是一个类型的名字

计算的结果是以字节表示的该类型的存储空间大小

前面说过的

类型不外乎是约定了一个存储空间的大小

这里就是给出这个大小

我们在动态申请空间的时候会用到这个运算

好了,同学们

我们今天的课程就到这里

下节课再见

数据结构课程列表:

前言

-1.算法概念导入

--1.1 算法概念导入

-2.数据结构课程介绍

--2.数据结构课程介绍

-数据结构前言PPT

第0章 预备知识

-0.1变量、类型和表达式

--0.1变量、类型和表达式

-0.2 函数

--0.2 函数

-0.3 指针和单链表

--0.3 指针和单链表

-0.4 数组、指向函数的指针

--0.4 数组、指向函数的指针

-第0章 预备知识讨论题

-数据结构第0章预备知识PPT

第1章 绪论

-1.1什么是数据结构

--1.1什么是数据结构

--测试题

-1.2基本概念和术语

--1.2基本概念和术语

--测试题

-1.3数据结构的描述

--1.3数据结构的描述

--测试题

-1.4抽象数据类型的定义和实现

--1.4抽象数据类型的定义和实现

--测试题

-1.5算法和算法分析概念

--1.5算法和算法分析概念

--测试题

-1.6算法分析示例

--1.6算法分析示例

--测试题

-第1章 绪论讨论题

-数据结构第1章 绪论PPT

第2章 线性表

-2.1 线性表的类型定义

--2.1线性表的类型定义

--测试题

-2.2线性表的顺序表示和实现

--2.2 线性表的顺序表示和实现

--测试题

-2.3 线性链表

--2.3 线性链表

--测试题

-2.4 静态链表

--2.4 静态链表

--测试题

-2.5 循环链表和双向链表

--2.5 循环链表和双向链表

--测试题

-第2章 线性表讨论题

-数据结构第2章线性表PPT

第3章 栈和队列

-3.1 栈

--3.1栈

--测试题

-3.2 栈的实现

--3.2 栈的实现

--测试题

-3.3 栈的应用

--3.3 栈的应用

-3.4 栈与递归的实现

--3.4栈与递归的实现

--测试题

-3.5 队列和链队列

--3.5 队列和链队列

--测试题

-3.6 循环队列

--3.6 循环队列

--测试题

-第3章 栈和队列讨论题

-数据结构第3章栈和队列PPT

第4章 串

-4.1 串

--4.1 串

--测试题

-数据结构第4章 串PPT

第5章 数组

-5.1 数组定义和表示

--5.1 数组定义和表示

--测试题

-5.2矩阵的压缩存储

--5.2 矩阵的压缩存储

--测试题

-第5章 数组讨论题

-数据结构第5章数组PPT

第6章 树和二叉树

-6.1 树的定义和基本术语

--6.1 树的定义和基本术语

-6.2 二叉树和二叉树的性质

--6.2 二叉树和二叉树的性质

--测试题

-6.3 二叉树的存储结构

--6.3二叉树的存储结构

--测试题

-6.4 遍历二叉树

--6.4 遍历二叉树(1)

--6.4 遍历二叉树(2)

--测试题

-6.5 线索二叉树

--6.5 线索二叉树

--测试题

-6.6 树的存储

--6.6树的存储

-6.7 树的转换和遍历

--6.7 树的转换和遍历

--测试题

-6.8 赫夫曼树

--6.8 赫夫曼树

-6.9 赫夫曼编码

--6.9 赫夫曼编码

--测试题

-第6章 树和二叉树讨论题

-数据结构第6章树和二叉树PPT

第7章 图

-7.1 图的定义和术语

--7.1.1图的定义和术语(1)

--7.1.2图的定义和术语(2)

--测试题

-7.2 图的存储结构

--7.2.1 数组表示法(1)

--7.2.2 数组表示法(2)

--7.2.3 邻接表

--测试题

-7.3 图的遍历

--7.3.1 深度优先搜索

--7.3.2 广度优先搜索

--测试题

-7.4 最小生成树

--7.4.1 普里姆算法

--7.4.2 克鲁斯卡尔算法

--测试题

-7.5 有向无环图

--7.5.1 拓扑排序

--7.5.2 关键路径

--测试题

-7.6 最短路径

--7.6.1 单源最短路径-迪杰斯特拉算法

--7.6.2 每一对顶点之间的最短路径-弗洛伊德算法

--测试题

-第7章 图讨论题

-数据结构第7章图PPT

第8章 查找

-8.1 查找基本概念和顺序查找

--8.1 查找基本概念及顺序查找

--测试题

-8.2 有序表的查找

--8.2 有序表的查找

--测试题

-8.3 二叉排序树

--8.3.1 二叉排序树(1)

--8.3.2 二叉排序树(2)

--测试题

-8.4 平衡二叉树

--8.4 平衡二叉树

--测试题

-8.5 哈希表

--8.5.1 哈希表及哈希函数的构造

--8.5.2 解决冲突的方法

--8.5.3 哈希表的查找和性能分析

--测试题

-第8章 查找讨论题

-数据结构第8章查找PPT

第9章 内部排序

-9.1插入排序

--9.1.1 插入排序(1)

--9.1.2 插入排序(2)

--测试题

-9.2 希尔排序

--9.2 希尔排序

--测试题

-9.3 快速排序

--9.3 快速排序

--测试题

-9.4 选择排序

--9.4 选择排序

--测试题

-9.5 堆排序

--9.5 堆排序

--测试题

-9.6 归并排序

--9.6 归并排序

--测试题

-9.7 基数排序

--9.7 基数排序

--测试题

-9.8 排序方法总结

--9.8 排序方法总结

-第9章 内部排序讨论题

-数据结构第9章内部排序PPT

0.1变量、类型和表达式笔记与讨论

也许你还感兴趣的课程:

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