的代码的第一部分是:为什么以下两个代码提供不同的结果?
#include <stdio.h> char *getString() { char *str = "Will I be printed?"; return str; } int main() { printf("%s", getString()); }
而且代码的第二部分是:
#include <stdio.h> char *getString() { char str[] = "Will I be printed?"; return str; } int main() { printf("%s", getString()); }
在上述两个码的,则返回字符指针,其指向一个可能被覆盖的局部变量,但仍然代码1管理成功运行,而代码2打印垃圾值。
“在上述两个代码中,都返回指向局部变量的字符指针”否,只有第二个代码执行该操作。 – tkausl
这不是悬挂指针:),因为你的标签说。在第一种情况下,指针指向第二种情况下的字符串,它是一个读/写内存中的数组。 – MCG
@MCG在执行getString()之后,将取消分配变量的内存,因此该函数返回的指针值是悬挂指针 –