的代碼的第一部分是:爲什麼以下兩個代碼提供不同的結果?
#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()之後,將取消分配變量的內存,因此該函數返回的指針值是懸掛指針 –