您的位置:首页 > 编程语言 > C语言/C++

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

2016-04-06 14:26 344 查看
什么是数据类型?

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

字节是什么?

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

标准C++的数据类型

标准C语言支持基本(内建)数据模型有
int
long
float
double
char
void
及和
signed
unsigned
*
&
的组合。标准C++增加了
bool
类型,同时还增加了两个内置的符号常量
true
false
(关键字)。

void
是“空类型”(无值型),意思是这种类型的大小无法确定。显然不存在
void
类型的对象,所以也就不能声明
void
类型的对象或使用
sizeof()
运算符计算
void
类型占用的内存空间。这是因为C++不能对一个未知大小的对象直接操作。
void
通常用于定义函数的返回值、参数列表(无参)或者
void
指针,
void
指针可以用作通用指针,因为它可以指向任意类型的对象。

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

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

typedef int BOOL
#define TRUE  1
#define FALSE 0


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

注意:无论是C程序还是C++程序我们都不要使用默认数据类型,一定要指出函数每一个形参的类型和返回值类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: