char *getString()
{
char str[] = "Will I be printed?";
return str;
}
int main()
{
printf("%s", getString());
getchar();
}
输出不应该是“我将被打印吗?” ?相反,输出结果是一些垃圾值。为什么会这样呢?
char str[] = "Will I be printed?";
是本地声明。它在功能上受到限制getString()
。当您离开该功能时,str[]
将被折叠。
因此,您尝试在其上打印数据。显然您会垃圾价值!
为了避免这种情况-
char *str = "Will I be printed?";
现在str
将被存储在代码存储器中,当您离开函数时,str
将不会被折叠。现在它将打印Will I be printed?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句