c语言中static extern register以及全局变量的细节

1。static定义的是静态存储类别的变量,对于静态变量实在编译时赋值的,以后每次调用函数时不再重新赋值而是只是保留上次函数调用结束时的值。

#include 
void main(){

	int add (int i);
	int i;
	for(i=0;i<3;i++)
	{
		printf("%d\n",add(i));
	}
}

int add (int i){

	static int sum = 0;
	return sum+=i;
}

输出结果:

0

1

3


2。extern用于声明外部变量。外部变量是在函数外部定义的全部变量,作用域是从变量的定义处开始,到本程序文件的末尾。如果在定义点之前的函数或其他文件中引用该变量,则应该在引用前用关键字extern对该变量做“外部变量声明”表示该变量是一个已经定义的外部变量,此时就可以合法的使用该外部变量了。

void main(){
    extern a,b;
    printf("%d",a+b);
} 
int a=3,b=4;
  有时为了限制变量只能在本文件中引用,而不能被其他文件引用,这是在定义外部变量时加上一个static。 
  

3。register用来声明存储在寄存器中的变量,对于一直处于计算的变量,使用register声明可以提高计算的速度。

你可能感兴趣的:(面试)