好,那下面我们就先来看一下C程序设计语言中的数据成分。 在跟大家介绍数据成分之前啊,我们先来讨论这么一个问题: 什么问题呢?关于内存。 因为数据成分这部分的很多知识啊, 跟内存这个概念有比较多的联系。 所以呢,我希望大家在真正开始学习数据部分的相关知识之前, 先来确认一下我们关于内存的一些认识。我希望大家呀, 按照这样一种方式来想象计算机的内存。你就把内存啊,想象成一条 长长长长的带子。在这个带子上面呢,有很多的小方格, 每一个小方格都是一个存储单元。 那这个存储单元有多大呢?它有8位。比方说这个存储单元里头, 好,我把它分解开来了,它有8位:1,2,3,4,5,6,7, 8。8位,每一位呢,存放一个二进制的数。 内存里头每一个小方格都是一个存储单元。 每一个存储单位的大小呢,是8位,8个bit。 然后这8位连起来,组成一个存储单元。 这一个存储单元的大小我们把它称为一个Byte。 一个字节,字节。 然后呢我们还讲过一些数量单位。比方说,1KB它就等于1024个字节。 1M呢,等于1024K,1G呢等于1024M,1T等于1024G,等等等等。 打一个比方的话,我希望你把内存想象成啊,火车道。 在这条火车道上,有很多很多的小方格,每个小方格都是一个字节,一个字节里面含了8位。 然后呢,每一个小方格啊,都有它对应的 地址。比如说这个小方格它对应的地址有可能是这个。 一般呢,在计算机里头我们用16进制的字符 来表示一个地址。没关系,如果听不懂的话没关系。只需要你了解 内存是一条长长长长的火车道。然后上面的每一个小方格都有一个相应的 地址,每一个小方格都有一个地址。你只要能这么想, 我觉得就可以了。有了对内存的这个认识之后,我们再来讨论数据成分,就 方便得多了。先来看一个程序, 啊,这个程序大家是最熟悉不过的了,就是在我们这个课上跟大家反复提起的第一个程序。 那么在这个程序里头,主要的数据成分在哪儿呢? 在这儿。关于数据的定义。 这是数据成分里边的一个很重要的内容。那么在 这个程序里头我们定义了一个数组,也定义了一些变量。 变量是一个程序中最基础的数据成分了。所以我们从 变量的定义开始我们对数据成分的了解。好,那下面我们就先从了解变量开始。 什么是变量呢?顾名思义,所谓变量就是指 在程序的运行过程中,值可以变化的那些量。就像以前我们所讲的, 它就相当于我们以前做数学应用题里头设的那些未知数。 设x啊,y啊,为”什么什么什么什么“。就相当于这些未知数。就是变量。 变量怎么去定义呢?大家都写过程序了,也都知道。那变量定义的格式呢,包含了两个部分: 给出变量的类型,然后给一个变量的标识符。比方说我们想定义一个整型的变量, 我们就可以 int Max; int呢,是变量的类型, 啊,是整数型。Max呢,是变量的名字,啊,也就是变量的标识符。那只要有 了这两个部分,其实这个变量的定义啊就已经差不多完成了。那么在之前呢,我们一直跟大家强调, 最好大家在定义变量的时候啊,就给它赋予一个初始值。 啊,比方说我们去定义Max的时候,我们紧接着去写上Max就等于0。 给它赋予一个初始值。这是一个非常非常好的编程的习惯。 因为忘记赋初始值的话,会对程序的正确性造成影响,待会我们再说。 这是变量的定义方式。无论你想定义什么类型的变量,都可以按照这种格式来进行。 比方说char类型的,啊,比方说double类型的,都可以按照这种方式来定义。 这儿需要强调的就是,在C程序里头, 所有的变量必须要先定义, 然后才能使用。不定义的变量是不能够直接使用的。有的同学就说 这不是显然嘛,都是这样的。不,在有一些程序设计语言里头啊,允许你使用一些未定义的变量。 特别是一些比较新的程序设计语言,它允许你这么干。但是在C程序设计语言里头, 必须要先定义一个变量,然后才能使用。 那么,当我们在程序中写下了一个 变量定义的语句,这对于计算机而言又意味着 什么呢?这句变量定义 它能起什么作用呢?比方说在这个程序里头, 我们定义了一个变量叫int max等于0,这样一个变量。 那么当计算机程序执行到这个地方的时候,它会做些什么呢?也就是说, 当我们写下了一个变量的定义的时候它又意味着什么呢?它的含义是什么呢? 我们就来解释一下。看这!这个呢,就是刚才我们让大家 想象过的那个内存。内存呢,是一条长长长长的火车道。 啊,上面呢,有很多很多的格子,每一个格子都是一个存储单元。然后每一个存储单元 都有一个地址。那么,当我们在程序里头定义了一个变量,比方说我们定义了 这样一个变量,int max=0,我们定义了这样一个变量。 那么计算机执行到这句变量定义的时候它会做些什么呢? 当然我们在这儿先不去讨论编译执行和解释执行的问题。 我只希望给大家一个印象。那么当计算机执行到你的这句程序 的时候啊,它会这么做,计算机啊,会在它的内存里头 找到一片存储空间,所谓存储空间就是说, 找到几个 连续的存储单元。那到底几个呢?待会我们再说。 找到这片存储空间以后,给这片存储空间起一个名字, 叫做max,然后把你所定义的这个变量的 初始值放到这片存储空间里头来。 并且呢,记下这个名字和这片连续的 存储空间的起始的地址之间的这个对应关系。把这个对应关系记下来。 这就是计算机所做的事情。那么完成了这样一个过程以后你就能做些什么了呢? 当你在程序里头再次提到max的时候,计算机就明白, 哦,你指的是这片存储空间。当你再给max重新赋值,比方说max等于 8,重新赋值。这个时候呢, 计算机就明白,哦,你要在这个存储空间里面,不再存 放0了,把它存放8。你就可以通过这种方式 来使用这个变量了。这就是当你写下一个变量定义的语句, 计算机在执行这个语句的时候所要做的事情。那么说到这儿呢,我相信大家对变量 应该有一个初步的一个认识了。有了这样一个认识以后呢,我们再去讨论一些问题就会变得容易了。 那么,既然我可以在计算机里头定义一些变量,比方说在这个程序里头,我会定义一些 变量,我可以在C程序里头定义哪些类型的变量呢?这些 变量之间又有什么不同呢?下面我们就来介绍一下。正如我们 跟大家提到过的,其实在C或者C++程序中啊,基本的数据类型 还真没多少。比方说我们给大家看过这样一张表,在C++里头啊基本的数据类型包含了 布尔型,字符型,整型,实型。这是基本的数据类型。 那么利用这些基本的数据类型呢,还可以定义一些复杂的数据类型,比方说数组型, 结构体型,联合体型,枚举型,指针型,类,等等。那么除此之外呢, 还有一个空类型。那么这次课呢,我们就跟大家逐一地介绍一下这些基本的数据类型。 我们先来跟大家介绍一下整型,其次呢是实型,再次 是字符型,最后我们说一下布尔型。OK,我们来看一下整型。