C语言的全局变量和局部变量

来源:互联网 发布:mac iphoto在哪 编辑:程序博客网 时间:2024/04/29 16:19

全局变量和局部变量是一个相对的概念,函数体之内定义的变量对于整个程序就是局部变量,对于该函数它就是该函数的“全局变量”。其实,我们不必关心它是全局变量,还是局部变量,只要我们明白它的作用域是什么就可以了。

全局变量:函数外(含main函数)定义的变量是整个程序的全局变量,程序中的任何函数都可以使用这些变量。个人认为,全局变量影响函数的封装和移植,影响代码的可读性,不必过多定义。

局部变量:函数体内定义的变量,程序调用函数时,创建变量,函数结束后,销毁变量。本函数定义的局部变量不被其他函数操作。gcc允许这样的变量存在:在不同的条件里定义相同名字的变量。如if(a){int b=1;}else{int b=2;},相对于判断条件,a相当于“全局变量”,b相当于局部变量。

extern:extern表示“外来的”,说明某变量是在本文件之外定义的全局变量,本文件要想使用该全局变量,需要extern,但要注意,这里说的全局变量是整个程序的全局变量。

static:static定义的变量可以认为是全局变量,也可以认为是局部变量。函数体外定义的static变量,是本文件中的全局变量,本文件中所有的函数都可以使用该变量,对于整个程序,它则是局部变量,因为其他文件不能使用这些static变量,使用extern也不行。多人开发时,如果非常想用全局变量,但又不想与他人的变量(或函数)冲突,那就在你的文件中定义static变量(或函数)吧。函数体内定义的static变量,只有该函数可以使用,其他函数不能,它与普通变量的区别在于,函数每次调用结束后,static变量不会被销毁,其值仍在。