全局变量 是在所有函数外部定义的变量(没有定义在某一个函数内),所有在其定义后的函数内部都可以使用这个变量。
局部变量 是在函数内部定义的变量,只能在函数内部使用
全局变量
#include<stdio.h>
int num = 5;//定义声明全局变量
int main(){
printf("num1 = %d\n",num);
printf("num1 = %d\n",&num);
num = 555;//依旧是全局变量
printf("num1 = %d\n",num);
printf("num1 = %d\n",&num);
return 0;
}
运行结果如下
此处num都是main()函数之前定义的全局变量,地址相同,在内存中的位置相同
局部变量
#include<stdio.h>
int num = 5;//全局变量
int main(){
printf("num1 = %d\n",num);
printf("num1 = %d\n",&num);
int num = 555;//此num非彼num,定义了一个新的局部变量
printf("num1 = %d\n",num);
printf("num1 = %d\n",&num);
return 0;
}
运行结果如下
此处num是重新定义的局部变量,在main()函数中有效,与全局变量num在内存中的位置不同
综合
#include <stdio.h>
int n = 10; //全局变量
void func1(){
int n = 20; //局部变量
printf("func1 n: %d\n", n);
}
void func2(int n){
printf("func2 n: %d\n", n);
}
void func3(){
printf("func3 n: %d\n", n);
}
int main(){
int n = 30; //局部变量
func1();
func2(n);
func3();
//代码块由{}包围
{
int n = 40; //局部变量
printf("block n: %d\n", n);
}
printf("main n: %d\n", n);
return 0;
}
结果如下
总结
局部变量的作用域在于其定义的代码块中,全局变量的作用域在其定义之后直到程序结束。
一个变量只能被定义一次,全局变量和局部变量标识符(变量名称)可能一样,但是是不同的变量,他们在内存中的存储位置不同。
于 2023-05-11 第一次整理编写
学习时整理,不当之处烦请指正
码字不易,留个赞再走吧