2.2 数据与类型
数据是程序处理的对象。C语言把程序能处理的基本数据对象分成一些集合。属于同一集合的数据对象具有同样性质:采用统一的书写形式,在具体实现中采用同样的编码方式(按同样规则对应到内部二进制编码,采用同样二进制编码位数),对它们能做同样操作,等等。语言中具有这样性质的一个数据集合称为一个类型。
从计算机的基础知识可知,计算机所处理的数据也分成一些类型,通常包括字符、整数、浮点数等,CPU为不同数据类型提供了不同的操作指令。例如,对整数有一套加减乘除指令,对浮点数有另一套加减乘除指令。程序语言中的数据分类与此有密切关系。但类型的意义不仅在此,实际上,类型是计算机科学的核心概念之一。在学习程序设计和程序设计语言的过程中会不断与类型打交道。
在C语言中,数据类型可分为:基本数据类型、构造数据类型、指针类型、空类型4大类。
(1)基本数据类型:基本数据类型最主要的特点是其值不可以再分解为其他类型。也就是说,基本数据类型是自我说明的。
(2)构造数据类型:构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。在C语言中,构造类型有数组、结构型、共用型等几种。
(3)指针类型:指针是一种特殊的,同时又具有重要作用的数据类型。其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。
(4)空类型:在调用函数时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定数据类型的,应在函数定义及函数说明中给予说明。例如在例题中给出的max函数定义中,函数头为“int max(int a, int b); ”其中“int”类型说明符即表示该函数的返回值为整型量。又如在例题中,使用了库函数sin,由于系统规定其函数返回值为双精度浮点型,因此在赋值语句“s=sin(x); ”中,s也必须是双精度浮点型,以便与sin函数的返回值一致。所以在说明部分,把s说明为双精度浮点型。但是,也有一类函数调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”,其类型说明符为void。在后面函数中还要详细介绍。
C语言中数据的基本类型包括字符类型、整数类型、实数类型等。请读者特别注意:① 程序中书写的、执行中处理的每个基本数据都属于某个确定的基本数据类型;② 类型确定了属于它的数据对象的许多性质,特别是确定了数据的表示范围。在具体C语言系统里,基本类型都有确定表示(编码)方式,这就确定了可能表示的数据范围。例如,一个整数类型中的所有整数只是数学中整数的一个子集,其中只包含有限个整数值,包括该类型能表示的最小和最大整数,其他整数在这个类型里没有容身之地,无法在这个类型中表示。