第一章引言
什么是定义及声明?
定义:定义是编译器创建一个对象,并且为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。
声明:1.告诉编译器该变量名已经匹配了一个内存上。2.告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量
定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存
1.1 最宽恒大量的关键字----auto
编译器在默认的缺省情况下,所有变量都是 auto 的。读者可以当作不存在该关键字。
1.2 最快的关键字---- register
这个关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中而不是通过内存寻址访问以提高效率。
1.2.1,皇帝身边的小太监----寄存器
寄存器其实就是一块一块小的存储空间,只不过其存取速度要比硬盘和内存快得多。(价格也贵很多)
数据从内存里拿出来先放到寄存器,然后 CPU 再从寄存器里读取数据来处理,处理完后同样把数据通过寄存器存放到内存里。
1.2.2,使用 register 修饰符的注意点
虽然寄存器的速度非常快,但是使用 register 修饰符也有些限制的:register 变量必须是能被 CPU 寄存器所接受的类型。意味着 register 变量必须是一个单个的值,并且其长度应小于或等于整型的长度。 而且 register 变量可能不存放在内存中,所以不能用取址运算符“&”来获取 register 变量的地址。
1.3,最名不符实的关键字----static
不要误以为关键字 static 很安静,其实它一点也不安静。这个关键字在 C 语言里主要有两个作用,C++对它进行了扩展。
1.3.1,修饰变
第一个作用&