局部变量和全局变量——C语言

64 阅读2分钟

局部变量

定义在函数内部的变量称为局部变量,局部变量的作用域仅限于函数内部

代码示例:

#include <stdio.h>
void f(){
	int a=1;
	printf("%d",a);
}

int main(){
	f();
	printf("%d",a);
}

运行结果:

image.png

在函数执行完毕之后,局部变量就会失去作用。 '因此main函数中的printf("%d",a)'会报错

修改后

#include <stdio.h>
void f(){
	int a=1;
	printf("%d\n",a);
}

int main(){
	int a=2; 
	f();
	printf("%d",a);
}

运行结果:

image.png

全局变量

在所有函数(包括main()函数)外部定义的变量称为全局变量,它不属于某个函数,属于源程序。因此全局变量可以被程序中的所有函数使用,它的有效程序从定义处开始到源程序结束。

代码示例1:

int a=1; 
void f(){
	printf("在函数f的内部:a=%d\n",a);
} 
int main(){
	f(); 
	printf("在函数main的内部:a=%d",a);
}

运行结果:

image.png

若在同一个文件中,局部变量和全局变量同名,则全局变量会被屏蔽,在程序的局部使用局部变量保存变量

代码示例2:

int a=1; 
void f(){
	a=2;
	printf("在函数f的内部:a=%d",a);
} 
int main(){
	f(); 
	printf("在函数main的内部:a=%d",a);
}

运行结果:

image.png

综合

int a=200; //全局 
void f(){
	int a=1;//局部 
	a=2;//使用局部变量 
	printf("在函数f的内部:a=%d\n",a);//2
} 
int main(){
	f(); 
	
	//在main函数中,绝对不可能访问 
	//f中的局部变量 
	//此处的a就是局部变量a 
	printf("在函数main的内部:a=%d",a);//200
}

运行结果:

image.png

int a = 200;
int b=100;
void f(){
	int a=1;
	b=2;
	printf("a=%d, b=%d\n",a,b);
}

int main(){
	f();
	printf("a=%d, b=%d",a,b);
}

运行结果:

image.png

void f(int m){
	m +=10;
}

int main(){
	int m =1;
	printf("m=%d\n",m);
	f(m);
	printf("m=%d",m);
}

运行结果:

image.png

void f(int x,int y){
	x +=1;
	y -=1;
}
int main(){
	int x=10;
	int y=10;
	f(x,y);
	printf("x=%d,y=%d",x,y);
}

运行结果:

image.png

//局部变量的产生场景 
// 1.for(int i)
// 2.{ }. if(){} while(){ }  { }
int main(){
	// 循环变量i,只能在循环的内部使用。
	// 理解为局部变量。 
     int i=0;
     for(i=0;i<10;i++){
        printf("%d",i);
//        for(int j=0;j<3;j++){
//           printf("%d",i);
//		} 
		
	}
	printf("i=%d",i);
} 
int main(){
	{
	int i=1;
	printf("i=%d",i);
	}
	int i=2;
	printf("i=%d",i);
}