目录
一、定义
1.变量与常量
变量:指的是在程序运行过程中,可以通过代码使他的值改变的量。
常量:程序运行过程中不会改变的量。
2.局部变量
局部变量:定义在函数中的变量。
3.全局变量
全局变量:定义在函数外面的变量。
4.动态变量和静态变量
静态变量比动态变量多一个关键字static,,比如:
动态变量:int i;
静态变量:static int i;
二、区别
1.局部变量与全局变量的对比:
(1)定义时没有初始化局部变量值是随机的,而全局变量值是0。
(2)全局变量具有文件作用域,而局部变量只有代码块作用域(工作的区域)。
(3)生命周期上:全局变量在程序开始运行之前的初始化阶段就诞生了,到整个程序结束退出的时候才死亡,而局部变量在进入局部变量所在代码块时诞生,在该代码块退出的时候死亡。
(4)变量分配位置:全局变量分配在数据段(数据段存的是数)上,而局部变量分配在栈上面
判断一个变量能不能使用,有没有定义,必须注意两点:第一,该变量定义的作用域是否在当前有效,是否包含当前位置。第二:变量必须先定义后使用。
(原文链接:https://blog.csdn.net/LIGUOZHENLX/article/details/104174831)
2.静态变量与动态变量
1.值不一样
自动(动态)变量:每次调用该函数的时,系统会给它分配存储空间,该函数调用结束释放其存储空间,即动态变量每次被调用都会被赋初值。
静态变量:多次调用该函数,只有第一次调用会赋初值,其余调用时,其值都是上次调用该函数执行结束后的值。
2.作用域不同
动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量,生命周期为从程序运行到程序退出,即贯穿整个运行时间。
静态全局变量:作用域为当前文件,从定义/声明位置到文件结尾,生命周期为从程序运行到程序退出,即贯穿整个运行时间。
C语言中使用静态函数的好处
(1)静态函数会自动分配到一个一直在用的存储区,直到程序退出,这样就避免了调用函数的堆栈推送和堆栈弹出,速度快了很多。
(2)静态意味着函数的范围只限于本文档。不用担心你定义的函数是否会和其他文件同名。