【发布时间】:2018-08-22 04:27:14
【问题描述】:
我在 C 语言的 Hackerrank 中执行此 program 并解决了程序,但没有将我的字符数组“结果”声明为静态。它返回了一个错误,我的输出与预期输出不匹配。但是只要我在数组'result'的声明中插入关键字'static',代码就运行成功了。
这是我的代码 sn-p:
char* timeConversion(char* s)
{
int i;
static char result[100]; // this doesn't work if i remove the word 'static'
if (s[0]=='1' && s[1]=='2' && s[8]=='A')
{
result[0]='0';
result[1]='0';
for (i=2;i<8;i++)
result[i]=s[i];
}
else if (s[0]=='1' && s[1]=='2' && s[8]=='P')
for (i=0;i<8;i++)
result[i]=s[i];
else
{
if (s[8]=='A')
for (i=0;i<8;i++)
result[i]=s[i];
if (s[8]=='P')
{
result[0]=s[0]+1;
result[1]=s[1]+2;
for (i=2;i<8;i++)
result[i]=s[i];
}
}
return result;
}
我不明白,这里的静态有什么用?
【问题讨论】:
-
如果你读过你的教科书,它对局部静态变量有什么看法?
-
静态变量存在于程序的整个生命周期中,它在函数调用之间保存它的值,局部变量仅在函数工作期间存在。这就是为什么当你删除关键字静态时它不起作用,你返回局部变量。另外请阅读静态它在某些情况下具有另一种含义,对于函数或全局范围变量