【发布时间】:2018-03-23 11:33:17
【问题描述】:
我是 C 语言的新手
这是我的代码:
char* getString()
{
char s[] = "Will I be printed?";
return s;
}
int main()
{
printf("%s", getString());
getchar();
}
它显示警告:函数返回局部变量的地址
现在当我编码时:
char* getString()
{
char *s = "Will I be printed?";
return s;
}
int main()
{
printf("%s", getString());
getchar();
}
它将打印字符串:“我会被打印吗?”
这是为什么呢? 指针和字符数组都是本地变量并且它们存储在堆栈中是真的吗?
PS 我正在使用http://ide.geeksforgeeks.org/
【问题讨论】:
-
格式化/缩进:(
-
在谷歌上搜索你的错误信息。我相信你会找到答案的。
-
字符串本身是静态存储的,但变量
s是函数本地的,所以函数返回时不存在。将s声明为static。
标签: c