数据类型是所有程序语言的基础。C++程序的所有功能都是建立在内置于C++语言的基本数据类型基础之上的。数据类型可以告诉数据代表的意义以及程序可以对数据执行的哪些操作,它确定了数据和数据操作在程序中的意义。
在C/C++中,数据类型分为两种,简单类型和结构类型。简单类型包括有整数类型、字符类型、浮点类型、指针类型、枚举类型和void类型等。结构类型包括有数组、字符串、记录和文件等。C/C++的基本数据类型属于简单类型。用户可以创建的所有数据类型都是根据基本类型定义的。(本小节只讨论简单类型,结构类型内容见后续。)
C++语言定义了几种基本类型,分别是字符型、整型、浮点型等。C++还提供了可用于自定义数据类型的机制,标准库正是利用这些机制定义了许多更复杂的类型,例如,可变长字符串string和vector等。此外,程序员还能自己修改已有的基本类型以灵活定制复合数据类型。
程序中不能定义void类型的变量,它仅仅是用于说明函数没有返回值或说明指针是无类型的。C++中所有的表达式是都可转换或映射为void类型的。
数据存储于内存,可以被随机访问。内存存储单元由8个位(0或1,对应一个晶体管开关)组成一个字节(byte),字节是基本的内存单元,都有一个唯一的内存地址对应。
![c5aabf3d75262fe93645e31defe7e950.png](https://img-blog.csdnimg.cn/img_convert/c5aabf3d75262fe93645e31defe7e950.png)
每一种编程语言都会将数据区分类型,由类型来定义值域、需要的内存空间,相应的编码和解码方案,可以执行的操作(使用的操作符)。C和C++也不例外。
![facbd02411708d71e7a6261cd277e355.png](https://img-blog.csdnimg.cn/img_convert/facbd02411708d71e7a6261cd277e355.png)
数据类型与字节长度:
![3d30730862ac8745b4af8890eb1300c6.png](https://img-blog.csdnimg.cn/img_convert/3d30730862ac8745b4af8890eb1300c6.png)
数据区分存储类别存储到不同的分区。每一个程序运行后,操作系统称其为一个进程(正在进行的程序),每一个进程都有属于自己的一个内存空间,进一步区分为不同的分区,例如代码存储到代码区,全局变量和静态变量存储到全局/静态区,常量存储到常量区(或数据段),并分配一个固定大小(如1M)的栈区用于存储局部变量(可重复利用),以及在程序运行过程中可以临时申请的堆区(操作系统和各进程占用的空间以外剩下的内存空间及硬盘上的虚拟内存)。
![8caa0902ce179e6d4c7d9244f663109b.png](https://img-blog.csdnimg.cn/img_convert/8caa0902ce179e6d4c7d9244f663109b.png)
就程序的结构而言,一个程序通常是多文件的,即使程序员只写了一个单文件,或多或少会通过预处理的#include来包含一些文件,最后通过链接器将诸多的文件链接到一起。在文件内部,通过语句块、函数来实现模块化。所以数据的可见范围一般从声明处开始,作用域可以是文件内的块、文件,或跨文件。如果需要访问跨文件的全局变量,需要用关键字extern来声明,如:
extern int size;
表示由此处开始需要使用另一文件