例1: 當我走串輸入,它成功地給出了輸出,寫這一段代碼:的printf的意外的輸出在C
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",&str);
return 0;
}
情況2: 。另一方面,它拋出一個運行時錯誤的這個片段:
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",str);
return 0;
}
我發現這個奇特的東西,想知道爲什麼會發生? 在此先感謝。
閱讀** **字符串,** **指針,數組** **和**動態內存分配**以及**格式說明**。通過閱讀關於*未定義的行爲*,在蛋糕上添加櫻桃。 – haccks
這裏的東西缺少記憶,那就是'str'。 –
除了你沒有爲'str'分配內存,情況2是正確的實現。在使用之前添加一個'str = malloc(50);'或類似的東西。在情況1中你幸運,只是爆炸一些不屬於你的記憶。 – eddiem