int main 以及void,一直搞不懂這兩個做什麼用,有什麼含義?

時間 2021-05-12 06:02:14

1樓:

在 C 語言裡,函式前面有乙個型別識別符號,這表示了這個函式會返回乙個什麼樣的結果。如果是void,那就是沒有返回值,說明這個函式僅僅是做一些操作,比如輸出資訊,修改檔案,我們無需獲取它的結果。舉個好理解的例子,函式sin(x),這個函式的返回值為double型別(如果你不是很清楚的話,先理解成小數吧)。

那麼,這個函式返回的值,就是這個正弦函式的計算結果。從這個意義上說,計算機程式設計裡的函式和數學概念中的函式有相似的地方。

那main()函式返回什麼呢?有什麼意義呢?這裡的return 0;據某些書上寫,省略掉也是符合標準的。

但是我沒有去求證。這裡的這個 0 是返回給作業系統,或者說是你執行這個程式使用的終端的。根據 C 和 UNIX 的規定,0 表示執行成功,沒有出錯。

你也許會說,那就算程式出錯了,它不也成功退出了嗎,有用咩?

當然有用了。特別是如果你用過 Linux 或者其它類 UNIX 系統的 Shell 的話。在筆者電腦上安裝的 zsh 上,如果把這個程式的返回值改為 -1,然後編譯執行。

結束以後的這個命令提示符會從綠色變為紅色,就像編譯乙個 C 程式的時候出錯中斷了一樣。它的意思是上乙個程式並沒有成功地得到執行,從而後面的工作(如果有的話)無法繼續進行。很多時候,電腦裡的程式是按一定的順序執行的。

比如說,你要先洗衣服,再晾起來,如果你沒有洗好,你就不應該把它掛起來。那麼我們假設洗衣服和晾衣服是兩個程式來做的,洗衣服的程式如果執行失敗,它返回乙個 -1 或者什麼值(完全可以規定每個非 0 值代表什麼型別的錯誤),然後傳遞給系統或者 Shell (這個詞的意思以後我也會說的),接下來晾衣服的程式啟動,發現洗衣服的程式返回的值不是 0,那它會自動停止。識得唔識得噶?

如果你用過 UNIX 上的管道(Pipeline) 或者寫過 Shell 指令碼哪怕是 Windows 上的批處理的話,你的了解應該會更深一層。

2樓:lyyfer

真的不要使用void main()了!正確的C/C++寫法就是int main()(int argc, char* argv)或者char** argv。void main()是不符合標準的!

始作俑者應該是MSVC吧。以前很多編譯器是不允許這樣寫的。雖然後來為了相容性很多編譯器允許了,但這並不代表這是一種正確寫法!

面試一直失敗,我該如何改善以及走出失敗的沮喪感?

月龍 沒有關係,面試一直失敗就一直面試,現在我們找工作也是一直投簡歷一直面試一直失敗,每次都生氣自己為什麼表現那麼笨。不過沒有辦法呀,不喜歡面試,害怕面試還是得去面試,你現在就多多練習,為以後找工作積累面試經驗吧! 說說而已 其實像這種面試,選擇人的理由,都還挺隨意的。可能因為乙個點選你,當然也可能...

高情商就是一直軟弱一直隱忍一直不發脾氣嗎?

Jasmine 很多時候,人們容易被觸怒 動火 發脾氣。其實,發脾氣不能解決任何問題。但如果我們能夠給不好的東西乙個好的解釋,保持頭腦冷靜,就可以壓抑激動的情緒,使自己心情開朗。正如前文所述富蘭克林所說 任何人生氣都是有理由的,但很少有令人信服的理由。低情商者恰恰相反,他們控制不住自己的情緒,極易發...

《盜墓筆記》以及《重啟》中,吳邪一直想找的「三叔」到底是吳三省還是解連環?

已經不重要了,無論是吳三省還是解連環,都是天真的三叔。先說答案,重啟裡是真三叔。我一直認為最後地下室的是解連環,進蛇沼的是真三叔,但是按照劇情,進蛇沼的三叔最後應該沒有出來。但是,釣王最後重啟開頭吳邪收到的簡訊又應該是真三叔發的。這是個坑,也不知道還能不能填。其實我感覺重啟就是主線不知道咋繼續編了然...