静态局部变量

之前一直觉得静态局部变量没用,因为它的作用域有限,但却在程序运行期间一直存在。以前觉得局部变量也可以完成静态局部变量的任务,只不过在栈上多分配释放几次内存而已,全局变量也可以。今天突然想到在函数内定义的静态局部变量可以保存函数的一些信息,比如如果想知道一个函数在程序运行期间被调用的次数就可以在这个函数内定义一个静态局部变量static int count;这个变量只能在该函数内使用,函数之外一直存在。用全局变量也可以实现这个功能,但不能保证该变量不被这个函数以外的部分修改,因为全局变量可以在一个工程的任意地方调用和修改它的值。静态局部变量的意义在于它可以保证这个变量不被修改,因此这个变量可以与该函数外的其他变量同名。静态全局变量也是这个思想,保证静态全局变量只能在定义这个量的源文件内使用,在其他源文件内不能使用,因此也可以在其它源文件中定义同名的变量。另外在函数返回指针的时候,要返回的变量(如果是在这个函数内定义的)的地址只能是静态局部变量。如果返回的是结构体类型,结构体成员很多返回指针将比直接返回结构体更便捷,因为省去了中间的临时变量的复制阶段,返回4字节(指针类型)比返回很多字节要好得多。静态函数的原理一样例如static int fun();表明这个函数只能在本文件中使用,所以也可以在不同文件中定义相同名称的函数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值