8. C语言 作用域规则

        任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。

        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个名额。

商业合作加微信,项目接包与外包。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值