C++基本数据类型和内存映像(1)

来源:互联网 发布:ai软件工具栏不见了 编辑:程序博客网 时间:2024/06/09 18:18

什么是数据类型?
数据类型是用来定义变量的值的类型,每种数据类型对应特定的字节数。例如在32位操作系统上,int类型的变量就占用4个字节的内存单元,而double类型占用8个字节的内存单元。

字节是什么?
字节是内存编址的最小单位,因为语言必须支持对一个单元(基本数据类型或混合数据类型的变量或对象)进行地址运算,而这个地址必须是有效的内存单元地址,所以最小对象(包括空对象)都会占用一个字节的内存空间。

标准C++的数据类型
标准C语言支持基本(内建)数据模型有intlongfloatdoublecharvoid及和signedunsigned*&的组合。标准C++增加了bool类型,同时还增加了两个内置的符号常量truefalse(关键字)。
void是“空类型”(无值型),意思是这种类型的大小无法确定。显然不存在void类型的对象,所以也就不能声明void类型的对象或使用sizeof()运算符计算void类型占用的内存空间。这是因为C++不能对一个未知大小的对象直接操作。void通常用于定义函数的返回值、参数列表(无参)或者void指针,void指针可以用作通用指针,因为它可以指向任意类型的对象。

注意:虽然bool类型的变量只存在两种可能的值:truefalse,按理说只需要一个bit就可以表示了。但是字节是内存编址的最小单位,而从计算机内存中提取一个变量的值是通过其地址进行的,所以bool变量也占用了1字节内存,即sizeof(bool)等于1,浪费了7bit。

标准C语言中没有bool类型,但是某些实现通过库提供了其映射,并且定义了相应的常量,例如:

typedef int BOOL#define TRUE  1#define FALSE 0

在标准C中,int为默认类型,也就是说如果你不明确指定函数的形参类型或函数的返回值类型,则他们的类型为int,而标准C++不支持默认类型,但是模板中有“默认参数类型概念”。

注意:无论是C程序还是C++程序我们都不要使用默认数据类型,一定要指出函数每一个形参的类型和返回值类型。

0 0
原创粉丝点击