(程式設計基礎)void main的誤用

2021-06-19 14:03:40 字數 829 閱讀 3005

很多同學喜歡用void main(),認為是無返回的main函式,這樣用可能有如下幾種可能:

(1)為了省事,可以少寫返回值(小弟以前就屬於這種)

(2)看到krc裡面用main(),以為就是void main(),主要因為krc的時候還沒有完善的c語言標準,這個用法在c99裡面已經明確禁止了,而且c++之父stroustrop也有說明void main()從來都不是符合標準的

不寫返回值的危害就是main的父程序無法拿到main程序的執行狀態,一般返回0的話就是正常的,非0值是異常的,貼出**:

#include #define std 0

#if std

int main()

#else

void main()

#endif

這裡面std巨集關閉就說明是非標準的void main(),如果開啟就說明是標準的int main(),看下結果:

非標準:

cheny.le@cheny-thinkpad-t420:~$ ./a.out && whoami

i'm not standard

標準:cheny.le@cheny-thinkpad-t420:~$ ./a.out && whoami

i'm standard!

cheny.le

可以看到int main()給shell返回的是0,代表程式正常執行,void main()給shell返回的是非0值,說明程式沒有正常執行(主要原因是因為沒有返回值導致的)。

總結:最好按照標準ansi c的寫法來使用main的返回值,尤其是在需要通過返回值來判斷程序是否正常執行完畢的時候。

void main 與int main的區別

void main 和 int main的區別就是有無返回值啊 在int main 可以出現非 int 型別的東西 我們在寫 時,乙個函式要麼有返回值,要麼沒有返回值,沒有返回值就用void來表示。main函式同樣的,在沒有返回值時加個void 有的編譯器必須main要有返回值 int 那就寫成in...

陣列的誤用

我上次寫了篇文章列舉了我所看到的一些不好的c 教學,並且承諾詳細地解釋這些技術。這篇就是其中的第一篇。我見到有歸因於trenchard more 定義了more array theory 的斷言,說陣列是所有資料結構中最基本的乙個。事實上幾乎沒有哪個在世的程式設計師沒有使用過陣列。如果沒有足夠的證據...

為什麼void main 是錯誤的

原文 為什麼void main 是錯誤的 main 函式通常是乙個c c 程式的入口點。一次為了讓執行時系統 runtime system 能夠正確地呼叫它,它必須遵守一些約定。現代的c 用如下約定 int main 或者 int main int argc,char argv 再者 int mai...