为了账号安全,请及时绑定邮箱和手机立即绑定

c语言的static与函数变量?

c语言的static与函数变量?

C
UYOU 2019-02-14 15:11:07
一个c函数char *getdate(){static char date[10];...return date;}这里date是static,即使这个函数返回后,仍可以在调用它的函数里使用这个变量,但如果定义为char date[10],则date只是在函数栈中分配空间,出了函数就有可能被覆盖,问题是如果是static char date[10],是否后面只能对它赋值一次?如果后面是将11-FEB-11一个字符一个字符的赋给date,是否可行?谢谢!
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

你在函数中定义static变量,在定义的时候须得给他赋值,而且在程序运行中,只有第一次调这个函数时你所赋的值才有效果,之后每次调此函数,都不会重新给他赋值了(例如staitc a = 10,下次跑这个函数时不会跑这句话了。)。不过你可以在函数中改变这个值,并且这个值会被保留下来,当你下次调这个函数的时候,得到的值会是你最后给变量所赋的值。
static 变量 是可以改变的。只是在初始化时候只会赋值一次而已。。。比如你在一个函数里定义 X 变量,那么你每次调这个函数都会去定义这个变量吧,但是如果你把 X 定义为 static 类型,那么你只会第一次掉它的时候会去定义它,后面调这个函数时,X 变量就已经存在了不会再去定义。但是它的值还是可以改变的。你可以通过赋值语句改变static变量的值 .

查看完整回答
反对 回复 2019-02-27
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
•; 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
•; 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
•; 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

查看完整回答
反对 回复 2019-02-27
  • 2 回答
  • 0 关注
  • 882 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信