任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。
C 语言中有三个地方可以声明变量:
| 在函数或块内部的局部变量 |
| 在所有函数外部的全局变量 |
| 在形式参数的函数参数定义中 |
8.1 局部变量
在某个函数或块的内部声明的变量称为局部变量。
它们只能被该函数或该代码块内部的语句使用。
局部变量在函数外部是不可知的。
8.2 全局变量
全局变量是定义在函数外部,通常是在程序的顶部。
全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。
全局变量可以被任何函数访问。也就是说,全局变量在声明后整个程序中都是可用的。
在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。
8.3 形式参数
函数的参数,形式参数,被当作该函数内的局部变量,它们会优先覆盖全局变量。
8.4 初始化局部变量和全局变量
当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。
定义全局变量时,系统会自动对其初始化
正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,因为未初始化的变量会导致一些在内存位置中已经可用的垃圾值。
file1.c
#include <stdio.h>
/*-----------------------------------------------------------------------*/
/* 函数声明 */
int power(int);
/*-----------------------------------------------------------------------*/
/* 全局变量 */
int A;
/*-----------------------------------------------------------------------*/
/*
* @brief
* 关于 main 的功能描述:
* 在“file1.c”输入全局变量A;
* 并在“file2.c”中函数调用A值.
* @param[in] void
*
* @return return 0
*
* @implements 低层需求标识号 XXXX
*/
int main()
{
int b = 3, c, d, m; //局部变量
printf("Enter the number a and its power m:\n");
scanf("%d,%d", &A, &m);
c = A*b;
printf("%d*%d=%d\n", A, b, c);
d = power(m); //m为形式参数
printf("%d**%d=%d\n", A, m, d);
return 0;
}
/*-----------------------------------------------------------------------*/
file2.c
/*-----------------------------------------------------------------------*/
/* 全局变量 */
extern A; //引用全局变量
/*-----------------------------------------------------------------------*/
int power(int n)
{
int i, y = 1;
for (i = 1; i <= n; i++)
y *= A;
return(y);
}
/*-----------------------------------------------------------------------*/
Visual Studio 运行结果:

非常感谢您的支持!创作不易,转发备注出处!
自用展示内容,不定期更新维护内容,让我们把 C开发 变得更专业。
十年开发基本功,常年开班收徒(一年学徒制度),每年10个名额。
商业合作加微信,项目接包与外包。
1484

被折叠的 条评论
为什么被折叠?



