在我们讲解关键字之前,我们先来了解一下声明跟定义的区别
定义:所谓定义就是(编译器)创建了一个对象,并为这一对象分配了内存并且给它取了一个名字,这个名字就是我们经常所说的变量名或者对象名,一个变量或者对象在一定区域内(比如函数内、全局等)只能定义一次
声明:有两重含义
1、告诉编译器,这个名字已经匹配到一块内存了,下面的代码用到的变量或对象在其他地方定义的,声明可以出现多次。
2、告诉编译器,这个名字已经被预订了,别的地方再也不能用它来作为变量名或对象名。
声明和定义的本质区别是:定义创建了对象并且为这个对象分配了内存,而声明则没有分配内存。
下面我们开始来看一下关键字
auto:在缺省状态下,编译器默认的所有变量都是auto的。
register:这个关键字请求编译器尽可能地将变量存放在CPU的内部寄存器中,而不是通过内存寻址访问以提高效率。
使用register应当注意,register变量必须是能被CPU寄存器所接受的类型,这意味着register变量必须是单个的值,并且长度应小于或等于整型的长度,而且register变量可能不存放在内存中,所以不能用取址运算符&来获取register变量的地址。
sizeof:记住,sizeof不是函数
switch case:要注意,case后面只能是整型或字符型的常量表达式。
return 语句不可返回指向“栈内存”的“指针”因为该内存在函数体结束时会自动销毁。
const为只读变量,具有不可变性,必须在定义的同时初始化,例
const int MAX = 60; //合法
const int MIN;
MIN = 20; //非法
枚举与#define的区别
1、#define宏量只是在预编译的时候进行简单的替换,而枚举常量则是在编译的时候确定其值。
2、一般在编译器里,可以调试枚举变量,但是不能调试宏常量。
3、枚举可以一次性定义大量相关的常量,而#define宏一次只能定义一个。
union关键字:大小端对union类型的数据会有影响。
所谓大端模式,就是数据的高字节存放在低地址中,而数据的低字节则存放在高地址中。
小端模式,则是数据的低字节存放在低地址中,数据的高字节存放在高地址中。