全局变量和局部变量的区别?函数局部变量如何定义
一、全局变量与局部变量有什么区别
全局变量和局部变量的区别如下:
1.作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
2.内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区
3.生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
4.使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量
二、局部静态变量,全局变量和全局静态变量的区别
时间不同,全局变量,静态全局变量和局部变量的区别是时间不同,
局部变量与其它三个有本质区别。局部变量,定义在函数内,作用域为定义位置,到所在大括号结束。每次执行到定义语句的时候,系统为该变量分配内存,当作用域结束后,内存被释放。而另外三个,都是在系统运行时就分配内存,在运行过程中都不会释放,直到程序结束。也就是说,局部变量和其它三个,最明显的区别
三、c语言局部变量和全局变量的优缺点
c语言全局变量优点:全局可视,任何一个函数都可以访问和更改变量值。内存地址固定,读写效率高。
缺点:容易造成命名冲突,当值不正确或者出错时,很难确定是哪个函数更改过这个变量,不支持多线程。
全局变量存在静态区,非static全局变量可被其它文件extern声明使用,缺点是线程不安全。