“struct结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量。③“数据类型名结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。......
2023-11-20
由于不同类型的数值占用内存单元的大小不同,所以高级语言在进行变量定义时,要具体指出该变量要存放数值的类型。高级语言中引入数据类型的概念来解决这一问题。在高级语言中,定义变量就是指明该变量的数据类型,从而为该变量分配相应数据类型的内存单元空间。
例如,C语言规定,整数有三种数据类型,分别是长整数、整数和短整数,长整数用符号long(或long int)表示,整数用符号int表示,短整数用符号short(或short int)表示。其中,int数据类型占用4个字节,由于4个字节可表示的数据范围是﹣32768~+32767,所以,定义为int数据类型变量的数据范围是﹣32768~+32767,当定义为int数据类型的变量超出了这个范围,数据就会出错,其程序也就必然会出错。long数据类型占用8个字节,所以,定义为long数据类型的变量可表示的数据范围,就远大于定义为int数据类型的变量可表示的数据范围。
在高级语言中,数据类型通常分作基本数据类型和构造数据类型两种。
1.基本数据类型
一般来说,高级语言的数据类型包括整数数据类型、实数数据类型和字符数据类型。为节省内存单元空间,整数数据类型又进一步细分为长整数、整数和短整数三种子类型,实数数据类型又分作单精度和双精度两种子类型。7.2.3节我们还要讨论构造结构的数据类型。由于构造结构的数据类型是由这里讨论的简单数据类型构成的,所以为区别起见,我们也称这里讨论的简单数据类型为基本数据类型。
为有效和正确地进行程序设计,程序设计人员在定义变量时,首先要根据问题分清该变量应是整数、实数和字符数据类型的哪一种,然后还要根据问题分清该变量应是哪种子数据类型。如果把所有变量都按占最大内存单元空间的子数据类型来定义,当然程序运行时不会出错,但是浪费的内存资源很多;如果把所有变量都按占最小内存单元空间的子数据类型来定义,当然内存资源会很节省,但是一旦数据超过该数据类型所允许的数据范围,则程序运行时就会出错。所以,定义变量时,数据类型(特别是子数据类型)的选择要合适。
在高级语言中,数据类型不仅用来确定数据(或变量)所要占用的内存单元大小,还用来进行操作的匹配性检查。例如,假设有如下C语言语句:
int n;
n=5.5;
上述程序段中,第一行语句定义了一个int类型的变量,第二行语句是给变量n赋一个单精度的实数数值5.5,而一个只有4个字节内存单元的整数类型变量中,是无法存放需要8个字节内存单元空间的单精度实数数值的,因此系统需要在运行该程序前对该语句提出可能存在错误或可能引起错误的警告,并在实际运行时,只把单精度实数数值5.5的整数部分赋值给变量n。
总结上述讨论,我们可以得出如下结论:
(1)数据类型是高级语言定义变量(即为变量分配具体大小的内存单元)的需要。
(2)数据类型是系统用来检查高级语言程序中表达式计算或变量赋值等是否匹配的需要。
为下面举例说明方便,这里我们给出C语言中基本数据类型的表示符号:
整数:长整数为long(或long int),整数为int,短整数为short(或short int);
实数:单精度实数为float,双精度实数为double;
字符:char。
2.构造数据类型
现实世界中有很多事物的属性是密切相关的,程序设计中反映这些事物属性的数据也应该密切相关。例如,描述学生的数据有学号、姓名、性别、年龄等,一个学生的这些数据应该组成一个整体。构造数据类型为程序设计人员提供了把现实世界中有密切联系的数据组织成一个整体的工具。
构造数据类型是在基本数据类型的基础上构造出来的数据类型。数组和结构是大多数高级语言都支持的两种最主要的构造数据类型。
(1)数组。数组是相同数据类型的集合。例如,在C语言中,假设我们要使用10个int型的变量,可以定义如下:
int v1,v2,v3,v4,v5,v6,v7,v8,v9,v10;(www.chuimin.cn)
为和数组类型的变量区别,我们也称这里定义的变量为简单变量。由于上述10个变量的类型相同,所以,也可以把这10个变量定义成一个数组。不同的高级语言定义数组和表示数组元素的方法略有不同,但基本原理都相同。在定义变量时,C语言用变量名后加符号“[]”来表示所定义的变量为数组类型的变量。如:
int v[10]
上述语句定义了包含10个变量的数组类型变量。数组变量中的一个变量称作一个数组元素。C语言规定数组元素的序号从0开始,所以10个数组元素分别是:v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9]。由于一个数组变量包含了若干个数组元素,所以高级语言在实现时,是给每个数组变量分配内存地址连续的内存单元块。如数组变量v的内存单元分配示意图如图7-1所示。每个数组元素占4个字节,所以总计占用了40个字节。
图7-1 数组变量的内存单元分配
由于一个数组变量是由若干个数组元素组成的一个整体,所以数组类型既可以简化变量的定义,还可以方便程序设计。例如,如果上述10个数组元素的数组变量中保存了要累加的数值,在编写循环形式的累加时,就可以把循环体写成sum=sum+v[i],其中,数组下标i从0增加到9。
(2)结构体。结构体是不同数据类型的集合。结构体用来表示有若干个分量的一个事物。例如,在登记一个学生的信息时,需要登记学生的姓名、年龄、平均成绩等信息。我们希望把描述一个学生各个属性的信息表示成一个有逻辑联系的整体,这样既可以简化变量的定义,也可以使程序更容易看懂。结构体就可以达到这个目的。
不同的高级语言表示结构体的方法不同。在C语言中,上述学生结构体可以定义如下:
struct student
{
char name[8];
int age;
float average;
};
上述语句称作结构体定义,结构体定义是指根据问题的需要,利用基本数据类型定义一种新的数据类型。其中,student为这个结构体的名,name、age和average是该结构体的三个分量。在上述定义之后,就可以像用数据类型int定义变量一样,用结构体student来定义结构体变量。例如,结构体变量可以定义如下:
student s;
由于一个结构体变量包含了若干个分量,所以高级语言在实现时,是给每个结构体变量分配内存地址连续的内存单元块。如结构体变量s的内存单元分配示意图如图7-2所示。char类型占1个字节,name分量为char类型的有8个元素的数组,共计占用了8个字节:int数据类型占4个字节,所以age分量占4个字节;float数据类型占8个字节,所以average分量占8个字节。因此,总计占用了20个字节。
图7-2 结构体变量的内存单元分配
在上述结构体变量S定义之后,我们就可以用如下三个赋值语句给该变量的三个分量分别赋值:
s.name=″张三″
s.age=22;
s.average=89.9;
有关计算机导论的文章
“struct结构体名”为结构体数据类型名字,使用结构体类型名才能在程序中定义结构体变量。③“数据类型名结构体成员i;”指定了结构体类型中的一个结构体成员,结构体成员必须像以前的变量定义一样进行说明,成员名的命名规则与变量名相同,要符合标识符的命名原则。④结构体类型定义语句是一条完整的C语句,所以结构体类型的声明要用“;”作为结束符。......
2023-11-20
例如,对一维结构体数组的初始化就类似于普通二维数组的初始化,初始化中的注意事项也与二维普通数组初始化时相同或类似。同样也不能将结构体数组元素作为一个整体直接进行输入输出,也需要通过输入输出数组元素的每一个成员分量达到输入输出结构体数组元素的目的。对结构体数组元素操作的唯一例外是可以将结构体数组元素作为一个整体赋给同类型数组的另外一个元素,或赋给一个同类型的结构体变量。结构体数组操作示例。......
2023-11-20
3.共用体变量的定义与结构体变量的定义类似,共同体变量的定义也有三种方法:定义类型的同时定义变量;定义类型后,用类型名定义变量;不给类型名,直接定义变量。......
2023-10-21
对于嵌套的结构体类型变量,访问其成员时应采用逐级访问的方法,直到获得所需访问的成员为止。利用结构体变量作函数参数,实现计算某学生3门课程平均成绩的功能。......
2023-11-20
一般设置前后两扇窑门的多为容积较大的全棉结构窑炉。一般大窑采用窑车,小窑则采用固定底,两者在结构上基本相同。但由于窑炉一般采用吸入式烧嘴,火焰喷出速度并不大,产物上行至窑顶转......
2023-10-11
struct date表示这是一个结构体类型,其中struct是关键词,不能省略;date为结构体数据类型名,不是变量名。date结构体类型包括了4个结构成员:unsigned int year,unsigned char month,unsigned char day,char week。这4个结构成员的数据类型可以相同,也可以不同,其中一个是无符号整型,两个是无符号字符型,另一个是字符型。......
2023-11-17
物理和几何对象的对称是展现群结构最自然的事物之一。举个例子,等边三角形可进行两种对称旋转,还有三种不导致变化的翻转(镜射),加上被称为“恒等式”的变换,总共有六个对称。该二元运算遵循一些基于对称行为方式的结构性规则。群是一个拥有一个满足结合律的二元运算的集合,这个二元运算包含一个恒等式对称,每个元素都有一个对应的逆。......
2023-11-22
数据具有多种类型和形态,通常按照以下几种方式进行分类。定性数据,表示事物属性的数据,如居民地、河流、道路等。定量数据是指反映事物数量特征的数据,如长度、面积、体积等几何量或重量、速度等物理量。数字数据,表示各种统计或量测数据。数字数据在某个区间内是离散的值。在地理信息系统中,数据的选择、类型、数量、采集方法、详细程度、可信度等,取决于系统应用目标、功能、结构和数据处理、管理与分析的要求。......
2023-08-13
相关推荐