局部变量和全局变量

局部变量和全局变量的区别

1.作用域:    ①全局变量:如果是在.c里面定义的话,作用域是整个.c文件。如果在.h里面定义的话,作用域是包含这个.h文件的所有文件里。当然在.c里面定义,然后再它的.h文件里使用extern的话,作用域也是包含这个.h文件的所有文件里。

                     ②局部变量:作用于是整个函数,循环或者挎号里。

2.生命周期:①全局变量:整个程序的生命周期。

                     ②局部变量:整个函数,循环或者挎号里。

3.存储位置:①全局变量:静态存储区

                     ②局部变量:栈区

4.注意事项:①无论是局部变量还是全局变量都是不可以和宏定义重名的。

                     ②当局部变量没有赋初值的时候,那么它的值是随机值。当全局变量没有赋初值的时候,其实它会自动赋初值为0.

                     ③当在一个作用域里面的时候,局部变量和全局变量重名时,以局部变量为准。

                     ④我们在一个文件里定义了一个全局变量,要是不想被其它的文件使用话可以加上static。这样这个全局变量的作用域就是这个源文件,在别的文件时无法使用的。

                     ⑤在定义一个全局变量的时候,最好是在.c里面定义,然后再它的.h里面使用extern。直接再.h里面定义的话程序大了可能会产生重命名的情况,具体还是要看程序员怎么处理。

5.写个代码具体看一下(.cpp文件)

#include <stdio.h>

int global_num1=0;             //生命周期:整个程序  作用域:该文件,和包含该文件的文件
static int global_num2=0;      //生命周期:整个程序  作用域:仅仅该文件

int main()
{
	int num3=0;                //生命周期:整个main函数  作用域:整个main函数

	{
		int i=0;               //生命周期:大跨号里  作用域:大跨号里
	}
	{
		int i=0;               //没有重名报错,证明前一个i已经消亡了
	}

	int num4=0;                //生命周期:从该处开始,到main函数结束  作用域:从该处开始,到main函数结束

	for (int i=0; i<5; i++)    //生命周期:for循环里  作用域:for循环里
	{
	}
	for (int i=0; i<5; i++)    //没有重名报错,证明前一个i已经消亡了
	{
	}

	return 0;
}

 

如有错误,望指正。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值