C 语言数据类型意义解析

先给出一张书上关于数据类型的分类图,其中对于指针类型和空类型做了不同的分类,具体原因请看下面的说明


关于C中的数据类型,个人的划分方法是 分为两类,一类是基本类型(地址类型也是基本类型的一种),也就是语言本身所提供的,编译器可以直接识别的。另一类就是组合类型(基本类型组合在一起)。


C语言给定数据类型的原因:

在用一个数据类型定义变量时,实际上也就是给定了三个信息,数据在内存中所占的字节数,数据在内存中的首地址,数据在内存中存储时的编码方式。对比弱类型语言,他们的编译器在保存这些数据的同时,必然会自动保存上面所说的三个信息。使用强数据类型的好处就是,一方面可以用编译器来检查数据,增加一定的安全性。也为编译器对之后的数据处理提供了很多的方便。

类型的详细说明:

1、整型 intshortlong  最初是为了节约内存空间而设计的,目前来看大部分情况下已经完全不必要了,定义变量时,最好是定义与机器字长一致的类型,不满足条件时,才考虑范围更大的类型。ps:补码存储

2、字符型:char 保存字符,不过其本质上是用ASCII 保存的整型。

3、浮点型:floatdouble对应实数类型,由于采用IEEE754 标准存储(组成原理笔记中有详细说明),所以在使用时应当注意精确度的问题,也就是说用==比较两个实数时完全没有意义的。

4、指针类型:也就是地址类型,32位系统中,指针类型数据固定占4个字节,它指向的是一个地址空间。其他的所有意义(比如所指向空间可以保存的数据的类型)都是编译器赋予它的,具体的编译器语法,在指针一节详细说明。

5、空类型:void,两个问题,一是空类型是什么? 二是 为什么要有空类型?

首先,空类型如果严格按照类型的定义来说,它并不是一种类型,而是编译器可以自动识别的一种特殊情况,比如,返回值类型位空,就表示没有返回值。那么编译器对函数的处理就达到了一种统一。空类型存在的原因是在一方面代表了“无”的状态,另一方面,作为空类型指针,它代表了“所有”的状态,即所有类型的指针都可以直接赋值给空类型指针。int *p1 = null; void * p = p1; // OK

6、数组类型:相同类型的多个数据的集合。对应的是同类型数据的批量处理问题。

7、结构类型:有关联的多个数据的集合。实际上它就是面向对象的雏形,也是数据库,数据结构的基础。

8、联合类型:主要还是内存空间不足的情况下的产物,多个变量用同一段存储空间存储。目前基本不会再使用。

9、枚举类型:本质上是一个int(或short)型变量,但是限制其取值范围。同样由编译器识别处理。







发布了41 篇原创文章 · 获赞 3 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章