一个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变量的值 .
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
•; 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
•; 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
•; 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
- 2 回答
- 0 关注
- 882 浏览
添加回答
举报
0/150
提交
取消