C语言特殊关键字的作用及含义(goto,extern,static,const,typedef等)
1.goto:无条件跳转语句:
goto 语句可以使程序在没有任何条件的情况下跳转到指定的位置,使用 goto 语句只能 goto 到同一函数内,而不能从一个函数里 goto 到另外一个函数里。不能从一段复杂的执行状态中的位置 goto 到另外一个位置,比如,从多重嵌套的循环判断中跳出去就是不允许的。
#include <stdio.h>
int main() {
int i = 0;
loop:
printf("i = %d\n", i);
i++;
if (i < 10) {
goto loop;
}
return 0;
}
2.extern:声明变量是在其他文件正声明(也可以看做是引用变量):
extern 用在变量或函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。
//文件1.c代码
#include<stdio.h>
extern void test();
int main()
{
show();
}
//文件2.cpp代码
#include<stdio.h>
void test()
{
printf("hello world");
}
3.register :声明积存器变量:
用 register 声明的变量是寄存器变量,是存放在CPU的寄存器里的。而我们平时声明的变量是存放在内存中的。虽说内存的速度已经很快了,不过跟寄存器比起来还是差得远。
寄存器变量和普通变量比起来速度上的差异很大,毕竟CPU的速度远远大于内存的速度。寄存器有这么两个特点,一个是运算速度快,一个是不能取地址。
4.static :声明静态变量:
static 关键字不仅可以用来修饰变量,还可以用来修饰函数。在使用 static 关键字修饰变量时,我们称此变量为静态变量。静态变量的存储方式与全局变量一样,都是静态存储方式。静态变量属于静态存储方式,属于静态存储方式的变量却不一定就是静态变量。
修饰局部变量时:只改变变量的生命周期,但是不改变作用域。
修饰全局变量时:称为静态全局变量,会改变全局变量的链接属性,从而使得全局变量的作用域变小。这时用extern就会报错。 (修饰函数同理)
5:const :声明只读变量:
const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。
6.typedef :用以给数据类型取别名:
在C语言中,除系统定义的标准类型和用户自定义的结构体、共用体等类型之外,还可以使用类型说明语句 typedef 定义新的类型来代替已有的类型。
例如:typedef int lbw;
之后我们就可以lbw a=1;相当于int a=1;
7.其他不常用的关键字:
(1)auto :声明自动变量 一般不使用
(2)volatile :说明变量在程序执行中可被隐含地改变