这里简要保存一下对于我第二章学到的一些知识点。
类型在程序中是一个编译期的概念,在可执行文件中没有类型这一概念。
1.类型包含了:
- 1.数据在内存中所保存的尺寸,C++标准中没有严格的限制,对于每一种硬件环境可能都是不同的,但限定了某种类型的最小尺寸,可以通过sizeof()来查询某一类型在环境中的具体尺寸。
- 2.取值空间,超过范围会产生溢出(上溢出、下溢出)(std::numeric_limits<>)
- 3.对齐信息,整理储存空间(alignof),对齐会影响到结构体数据的存放,一般会以结构体中最大的类型尺寸为结构体中对象的存储单元。
#include<iostream> struct Str { int a; char b; }; int main() { char a = 'a'; std::cout << alignof(char) << std::endl; std::cout << alignof(Str) << std::endl; }
2.对象是变量或常量的总称,初始化将数值与对象关联起来。声明与定义存在着差别,可以用extern声明外部定义。
extern int g_x;
声明这个函数的定义不在该文件中,系统将在目录中寻找g_x的定义
3.这里有一个缺省初始化的知识点,在函数内部定义变量但未赋值时,会在系统内部开辟存储空间,并给这个空间赋随机值。在全局下的初始化变量(静态变量、线程局部变量)时,会在系统内部开辟空间并赋0.
4.类型相关标准未定义部分
—char是否有符号
—整数中内存的保存方式:大端和小端
计算机系统是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但对于位数大于8位的处理器,如16位或32位的处理器,由于寄存器宽度大于一个字节,那么必然存在一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式的出现。在跨系统传输数据的时候需要考虑这个问题。
—每种类型的固定大小
上面提到过C++中没有对类型尺寸的上限做特殊限制,但为了统一标准,在C++11中引入了固定尺寸的整数类型,如int32_t (32bit)