C语言 作用域
任何编程的作用域是程序的一个区域,定义的变量可以存在于该区域,而超出该变量则不能访问。
- local 局部变量
- global 全局变量
- formal 参数变量
让我们了解什么是 local 和 global 变量以及 formal 参数。
局部变量(Local)
在函数或块内声明的变量称为局部变量,以下示例显示了如何使用局部变量,在这里,所有变量a,b和c都是main()函数的局部变量。
#include <stdio.h>
int main () {
/* local variable declaration */
int a, b;
int c;
/* actual initialization */
a=10;
b=20;
c=a + b;
printf ("value of a=%d, b=%d and c=%d\n", a, b, c);
return 0;
}
全局变量(Global)
可以由任何函数访问。
#include <stdio.h>
/* global variable declaration */
int g;
int main () {
/* local variable declaration */
int a, b;
/* actual initialization */
a=10;
b=20;
g=a + b;
printf ("value of a=%d, b=%d and g=%d\n", a, b, g);
return 0;
}
程序的局部变量和全局变量可以具有相同的名称,但是函数内局部变量的值将优先,这是一个示例:
#include <stdio.h>
/* global variable declaration */
int g=20;
int main () {
/* local variable declaration */
int g=10;
printf ("value of g=%d\n", g);
return 0;
}
编译并执行上述代码后,将产生以下输出:
value of g=10
参数变量(formal)
形式参数在函数中被视为局部变量,它们优先于全局变量。以下是一个示例:
#include <stdio.h>
/* global variable declaration */
int a=20;
int main () {
/* local variable declaration in main function */
int a=10;
int b=20;
int c=0;
printf ("value of a in main()=%d\n", a);
c=sum( a, b);
printf ("value of c in main()=%d\n", c);
return 0;
}
/* function to add two integers */
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;
}
编译并执行上述代码后,将产生以下输出:
value of a in main()=10
value of a in sum()=10
value of b in sum()=20
value of c in main()=30
值初始值
定义局部变量后,系统不会对其进行初始化,您必须自己对其进行初始化。如下定义全局变量时,系统将自动初始化全局变量.
数据类型 | 初始默认值 |
---|---|
int | 0 |
char | ‘\0’ |
float | 0 |
double | 0 |
point | NULL |