【发布时间】:2015-04-02 15:08:34
【问题描述】:
我对悬空指针有一个想法。我知道下面的程序会产生一个悬空指针。但是我无法理解程序的输出
char *getString()
{
char str[] = "Stack Overflow ";
return str;
}
int main()
{
char *s=getString();
printf("%c\n",s[1]);
printf("%s",s); // Statement -1
printf("%s\n",s); // Statement -2
return 0;
}
以下程序的输出是 吨 如果只有 Statement-1,则输出是一些抓取值 如果只有 Statement-2 则输出是新行
【问题讨论】:
-
消化完下面的答案后,请考虑一下为什么只更改程序中的一些内容,然后works。提示:
char *var和char var[]在函数参数的上下文之外不同义。