C语言提供了局部变量的定义,局部变量也称为:内部变量。局部变量就是定义在大括号{ }包含的代码块内,例如:
if(){ }
if(){ }else{ }
for(){ }
while() { }
do { } while();
switch(){ }
还有函数的定义,例如:
void func(void){ }
在大括号{}包含的代码块内定义的变量,称为:局部变量。程序测试例子如下例如:
程序运行结果如下:
可以看到,在main函数中定义的变量a和变量b,都是局部变量。在func函数中定义的变量a和变量c都是局部变量。
局部变量的作用域和生命周期就是在它们所定义的代码块内。所以,总结如下:
(1) main函数中定义的局部变量a、b的作用域就在main函数内,生命周期也就在main函数中。
(2) func函数中定义的局部变量a、c的作用域就在func函数内,生命周期也就在func函数内;
(3) main函数和func函数定义的局部变量,可以变量名一样,但是,它们是不同的对象。
对于局部变量的作用域,比较好理解,只要离开了定义局部变量的代码块,那么,局部变量就无法使用,因为超越了作用域。那么,对于局部变量的生命周期,可以参考下面测试例子。程序测试例子如下:
程序的运行结果如下:
可以看到,调用func(9)函数的时候,在func函数中定义了局部变量a,然后,累积局部变量a的值为9。接着,调用func(10)函数的时候,进入func函数,此时,重新定义局部变量a,然后,累积局部变量a的值为10。
那么,在调用func(9)函数的时候,定义了局部变量a,此时,当func(9)函数调用完成,离开func函数代码块的时候,局部变量a就销毁。此时,局部变量a的生命周期结束。
所以,当接着调用func(10)函数的时候,进入func函数,此时,重新定义局部变量a,与调用func(9)函数时创建的局部变量a没有任何关系。
因为,当离开定义局部变量所在的代码块时,局部变量就销毁,结束其生命周期。所以,我们可以总结:
(1) 局部变量的作用域,就在定义该局部变量的代码块内;
(2) 局部变量的生命周期,就在定义该局部变量的代码块内;
所以,局部变量离开定义它的代码块时,局部变量声明周期结束,变量被销毁,无法再继续使用。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip