欢迎大家来到IT世界,在知识的湖畔探索吧!
1 局部变量、全局变量
学习了函数的定义和使用之后,我们就会遇到这样的一个问题:不同函数之间的变量是否能够相互引用?例如,在func函数之间定义的变量A,是否可以在其他函数func1中引用?
如下是一个程序测试例子:
编译的结果如下:
可以看到,编译出错,提示在main函数中使用的变量a没有定义。那么,变量a已经在func函数中定义了,为何不可以使用?
此时,我们就引出变量的两大属性:作用域和生命周期。
然后,我们再分析和总结局部变量、全局变量、静态变量的作用域和生命周期;讲解在不同的程序设计环境下,应该定义什么类型的变量,才有利于程序的设计。
2 变量作用域
在日常生活中,我们出行时都会使用到“公交卡”,搭乘公交车的时候,刷卡扣钱就可以乘车。假设你是在深圳办理的公交卡,可以在深圳搭乘公交车;但是,如果你去北京游玩了,那么,你在深圳办理的公交卡在北京的公交车上就无法使用。
此时,我们就引出一个“作用域”的概念,就是说,我们在深圳办理的公交卡,可以在深圳使用,到了北京,就无法使用。就是“跨地域”的问题,导致公交卡无法正常使用。所以,这就是“作用域”的限制。
同样,在C语言中定义的变量,也有“作用域”的限制。程序测试例子如下:
程序运行结果如下:
可以看到,我们在if条件语句内定义了变量b,而且可以输出变量b的内容。那么,我们再对程序进行修改,在if语句后面,使用变量b,程序测试例子如下:
编译结果如下:
可以看到,编译程序错误,提示在main函数的第二次printf函数中,引用的变量b没有定义。但是,我们已经在if条件语句内,定义了变量b,而且在if条件语句内可以使用,为何在条件语句if外面不可以使用?
此时,我们就引出了C语言变量的“作用域”概念。在C语言中,使用大括号{ }包含的代码块,就是一段代码模块,那么,在一段代码模块中定义的变量,它只能够在该代码模块中使用,在代码模块外面,就无法使用代码模块内定义的变量了。在代码模块中定义的变量,它们的作用域就只有在代码块内。
所以,在上面的例子中,if条件语句后面接着大括号{ }包含的一段代码块,那么,在大括号{ }代码块中定义的变量b只能够在该代码块中使用,变量b的作用域就是在if条件语句后面的大括号{}代码块内。出了代码块外面,就无法使用变量b。
那么,此时我们提到了大括号{}包含的一段代码,称为:代码块。在C语言中,有很多语句都可以定义代码块,例如:
if(){ }
if(){ }else{ }
for(){ }
while() { }
do { } while();
switch(){ }
还有函数的定义,例如:
void func(void){ }
可以看到,这些语句中,使用大括号{}包含了一段代码块,那么,在代码块中定义的变量,它的作用域就只有在代码块内。我们经常遇到函数的定义,那么,在函数内定义的变量,它的作用域就只有在函数内。
所以,本章节,我们学习了代码块的定义,使用大括号可以定义一段代码块。在代码块内定义的变量,称为:局部变量,局部变量的作用域,就只局限在定义它的代码块内。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/95104.html