- 关键字
C语言共有32个关键词
理解关键字之前先区分声明和下定义的区别
下定义:编译器创建一个对象,并且为这个对象分配一块内存,且赋予它名字。
声明:1、告诉编译器这个变量已经在别的地方分配了;
2、告诉编译器,这名字我先预定了,其它地方不能再那这个名字去为对象命名。
定义也是声明:定义分配了内存空间,而声明没有。
Register
关键字要求编译器经可能将变量存储在CPU内部寄存器中,而不是通过寻址方式访问以提高效率,但是这里只是尽可能,不是绝对。
static
1、修饰变量
静态局部变量,一旦定义就只能在当前的文件中使用该变量/函数,由于被static修饰的变量是存储在静态存储区,所以就算函数运行完了,改变量中的值也不会被销毁,仍保持上一次的值。
2、修饰函数
被其修饰的函数的作用于将被限定于本文件。
sizeof
是关键字而不是函数,
int I;
siezof i;结果为4,所以足够证明sizeof是关键字而不是函数,函数是需要加括号去证明。
unsigned signed
在计算机系统中,数值一律用补码来表示(存储)。主要原因是使用补码,可以将符号位和其他位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。整数的补码与其原码一致;负数的补码;符号为1,其余为为该绝对值的原码按位取反,然后整个数加1 。
unsigned int j = 10;
int i = -20;
i+j = ?
j的补码是 01010,i的补码是 101100;
i+j = 110110,再一次进行补码运算得到101010,即-10;
void
void 真正发挥的作用在于:
(1)对函数返回的限定;
(2)对函数参数的限定。
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。
return
return语句不可返回值指向“栈内存”的“指针”。因为该内存在函数结束时被自动销毁。
Union
Union维护足够多的空间来放置多个数据成员中的“一种“,而不是为每一个数据成岩配置一个空间,在union中所有的数据成员公用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址,union对任何变量的存取都是从union的首地址开始。
可用来测试电脑对于字节的存储方式。
enum
enum变量类型可以给其中常量符号赋值,如果不赋值则会从那个被赋初值的那个常量开始依次加1,如果都没有赋值,它们的值从0开始一次递增1,如分别用一个常熟表示不同颜色
enum Color
{
GREEN=1;
RED;
BLUE;
GREEN_RED=10;
GREEN_BLUE;
}ColorVal;
其中各常量代表的数值分别为
GREEN=1;
RED=2;
BLUE=3;
GREEN_RED=10;
GREEN_BLUE=11;