常见关键字
auto 声明变量的生存期为自动 (默认为int型)
break 结束所有的循环
continue 结束本趟循环
break和continue必须放在循环体内
case switch语句
不能做switch的参数的类型有什么?
switch 的参数类型是整型的,不能是float,double
java中long不可以
const 定义常量(定义时初始化)
- const修饰指针变量的时候:
- const如果放在的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变。但是指针 变量本身的内容可变。
- const如果放在的右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指针指向的内 容,可以通过指针改变。
goto 跳转到某一条标签标识的语句
int a = 10;
gaobo://标签
printf("hello");
goto gaobo;//死循环
register
register int a = 10;// 建议编译器把a放到寄存器
extern 声明外部符号
typedef 类型重命名 复杂的类型
define 定义常量和宏
#define SIZE 10 //定义标识符常量
#define ADD(x,y) x+y //定义一个宏,宏是有参数的
宏的副作用:
#define ADD(x,y) ((x)+(y)) //加括号
typedef和define的区别?
#define是与处理指令,在预处理时进行简单而机械的字符串替换,不做正确性检查,只有在编译已被展开的源程序时才会发现可能的的错误并报错;可以为类型取别名,还可以定义常量、变量、编译开关等;没有作用域的限制。
typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用typedef;只用来定义类型的别名;有自己的作用域。
typedef int Arr[10] ; // int[10] 加上typedef就会由变量变成对应的类型
static 修饰局部变量 提升局部变量的生存周期
修饰全局变量 作用域被限制到当前的源文件中
修饰函数 作用域被限制到当前的源文件中
static 和 extern的区别和联系?
extern 置于变量或者函数前,作用域是整个工程,表示变量或者函数的定义在别的文件中,通过在变量前添加extern来访问这个全局变量;修饰的变量没有真正的内存。
static 只要在全局变量前加static,那么这个全局变量的作用域就会缩小到当前文件,外界不能访问