❶ C語言編程的時候出現「程序已停止工作」的原因有哪些
最常見的原因:程序發生了空指針調用。
如果你剛入門,請檢查:
scanf("%d",&i); 有沒有加上「&」號,scanf必須在變數前加「&」(取地址符)。
如果沒有加&, scanf會把變數當作地址來用,而你的程序中又沒有以變數為地址的變數,操作系統不允許程序讀寫程序規定范圍以外的空間。出於安全起見,操作系統將其緊急中止。就發生了「***.exe已停止工作」的效果。
如果你正在學習數組,請檢查:
數組是否越界。定義為int a[10]的數組,如果寫a[10]=0; 相當於對a數組里的第11個元素賦值。事實上,a數組里並沒有第11個元素。如果該元素的位置指向一個程序以外的內存,操作系統同樣會果斷將其終止。
如果你正在學習指針,請檢查:
指針是否賦值;
在給指針賦值時,有沒有在非指針變數前加取地址符「&」;
int * p = &i; //正確!
int * p = i; //錯誤!
這與在sccanf里沒有加上「&」號的原因大致相同。
指針問題屬於程序邏輯錯誤,很多時侯編譯器只會給你一個警告。要注意警告發生的位置自己是否有把握。如果你多次編譯或忽視編譯警告而進行鏈接,編譯器會認為你對這些警告是有把握的,完全地信任了你,也就沒有警告了。