作用域:作用域是程序中定义的变量所存放的区域,超过该区域就不能被访问
C语言中有三个地方可以声明变量:
- 在函数或块内部的局部变量。
- 在所有函数外部的全局变量。
- 在形式参数的函数参数定义中。
1、局部变量
int main局部变量() { /* 1、局部变量 - 在某个函数块的内部声明的变量为局部变量。 - 它们只能被该函数或该代码块内部的语句使用。 - 局部变量在函数外部是不可知的 */ //局部变量声明 int a, b; int c; //实际初始化 a = 10; b = 20; c = a + b; printf("value of a = %d,b = %d and c = %d\n",a,b,c); return 0; }
2、全局变量
- 全局变量通常定义在函数外部,通常是在程序的顶部。
- 全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。
- 全局变量可以被任何函数访问
int g; int d = 10; int main全局变量() { //局部变量声明 int a, b; //实际初始化 a = 10; b = 20; //g = a + b; //在程序中,局部变量和全局变量的名称可以相同,但在函数内,如果两个名字相同,会使用局部变量的值,全局变量的值不会使用 int d = 20; printf("d = %d\n",d); //printf("a = %d,b = %d,g = %d",a,b,g); return 0; }
3、形式参数
函数的参数,形式参数,被当作该函数的局部变量,如果与全局变量同名,它们会优先使用
//全局变量声明 int a = 50; //添加两个整数的函数 int sum(int a, int b) { printf("value of a in sum() = %d\n",a); printf("value of b in sum() = %d\n",b); return a + b; } int main() { //局部变量声明 int a = 10; int b = 20; int c = 0; //int sum(int,int); printf("value of a in main() = %d\n",a); c = sum(a, b); printf("value of c in main() = %d\n",c); return 0; }
4、全局变量与局部变量在内存中的区别
- 全局变量保存在全局存储区中,占用静态的存储单元;
- 局部变量保存在栈中,只有在所在函数被调用时才动态的为变量分配存储单元
初始化局部变量和全局变量
当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动对其初始化
int = 0; cahr = '\0'; float = 0; double = 0; pointer = NULL;
标签:11,初始化,函数,作用域,局部变量,C语言,int,printf,全局变量 From: https://www.cnblogs.com/Jx153875/p/17967990