初识C语言(基础篇)——变量作用域和生命周期详解

该系列(初识C语言)文章内容主要是对C语言整体结构扫描式的总览概括,使得初学者能在心中构建起学习C的一个框架体系,能够更快的适应学习编程的过程,为深入的学习打下良好的基础


前言

本篇文章内容主要是为大家做一个引领上的讲解,在该阶段对于某些问题上我们只需抱着一种不求甚解的态度学习即可,当然也可以网上查找资料来加深自己的理想或者私信博主一起讨论。

我们接下来将为延续上一章节的内容,向大家讲解变量的作用域和生命周期、

在每个知识点中,都会结合相关简单的实例和代码编程思路来讲解,使得文章内容通俗易懂,以便带着更好的理解


提示:以下是本篇文章正文内容,下面案例可供参考

一、变量的作用域和生命周期

1.如何来理解变量的作用域

概念:一段程序代码中所用到的变量并不是总是有效的,而限定该变量在整个程序中所能够使用范围,就称作该变量的作用域。而根据变量作用域的范围大小,又可以将变量划分为全局变量和局部变量

概念辨析(易错):

(1)全局变量值得是否是在main函数中所定义的变量呢?

全局变量不是面函数中所定义的变量,这种变量同样是属于局部变量。这是很多初学的小伙伴很容易误解的一个点,由先入为主思想所导致。

全局变量:作用域使整个工程。用通俗的话来讲就是不属于任何一个模块(这里的模块指的是“{}”),也即不被任何的函数和“{}”所包括,不论在程序的哪个位置,都可以被使用(前提与局部变量不重名),并且往往声明在整个程序前端

局部变量:作用域是变量所在的局部范围

整体结构如下所示:

//引用头文件
include <stdio.h>
...

//声明全局变量
int a = 10;  

//函数
int name1(param1, ...)
{
    ...
}
...

//主函数,整个程序的入口
int main()
{
    ...
    return 0;
}

全局变量一般声明在头文件与最初自定义函数之间的位置

(2)当全局变量和局部变量的变量名相同时,如何判断使用的是哪一个?

我们可以简单的理解成“就近原则”,业绩靠近那个就优先调用谁,但实际上这会出现很大的问题,对待具体问题应该具体分析,没有一个统一的说法,但无外乎是以下几种情况:

问题:输出b的值是多少

实例(一)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//情景一
int b = 10;  //全局变量

int main()
{
	int b = 5;  //局部变量
	//输出
	printf("%d", b);
	return 0;
}

 很显然这种情况下,是满足“就近原则”的,但一定不能以偏概全,例如以下这种情况

实例(二)

include <stdio.h>

//情景二
int b = 10;  //全局变量

int main()
{
	//创建一个模块单元
	{
		int b = 5;  //局部变量
	}
	//输出
	printf("%d", b);
}

 此时的输出结果却是全局变量的值。这是因为局部变量的作用域值存在于我们所创建的模块单元中,一旦出了局部变量作用范围,则全局变量才会发现作用。

总结:当全局变量与局部变量的命名重复冲突时,在创建局部变量所作用的范围内,则“局部优先”,只有当超出局部变量的作用范围才考虑全局变量

2.变量的生命周期指的是什么

生命周期指的是变量的创建到变量的销毁之间的一个时间段

局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束

全局变量的生命周期:整个程序的生命周期

3.如何来理解作用域和生命周期两者之间的关系

作用域主要指的是变量在空间位置上的作用范围,而生命周期则是在时间上变量从创建到销毁一个周期过程。

两者关系密不可分:创建---->局部作用域的起始;销毁---->跳出局部作用域


总结

以上就是今天所要与大家分享的主要内容,不论学习那种计算机语言,认识并理解变量生命周期和作用域是学好改门语言的关键,希望该篇文章能对大家有所帮助

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whelloworldw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值