日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言srand函数怎么用_C语言的main函数到底该怎么写

發布時間:2024/1/23 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言srand函数怎么用_C语言的main函数到底该怎么写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

從開始學習C語言到現在,我們似乎看到了很多個版本的main函數,那么哪一種才是正確的呢?我們先來看看目前有哪些版本。

main函數版本

第一種,沒有返回值,沒有入參:

main()

在C89標準中,這種寫法是可以接受的,但使用現在的編譯器編譯時,會報告警,并且會將其返回值默認為int。實際上,如果函數沒有顯式聲明返回類型,那么編譯器會將返回值默認為int。

第二種,返回值為void,沒有入參:

void?main()

這種形式的來源不得而知。但是為何這么多初學者使用?main函數的返回值最終會作為程序的退出狀態,而一旦聲明為void,在程序退出后,想要獲取其退出狀態也就不可以了。因此不建議其返回值為void。

第三種,返回值為int,參數為void:

int?main(void)

這是常見的一種寫法。形參為void,表明它在調用的時候不能傳入任何參數,那么它也就不能獲取命令行參數了。

第四種,返回值為int,沒有參數:

int?main()

看起來似乎和第三種沒有什么區別,但這種形式卻有些許不同。雖然它的聲明沒有入參,實際調用卻可以傳入參數,看下面的例子:

#includevoid??test();int?main()?{?????test(4);????return?0;?}void?test(int?a){????printf("%d",a);}

對于上面的程序,我們仍然可以編譯并正常運行,test函數雖然聲明為無入參,但調用時卻是可以傳入任何參數或不傳參數的。

第五種,返回值為int,有兩個入參:

int?main(int?argc,char?*argv[])

這也是最常見的一種寫法。第一個入參為命令行參數個數,第二個入參為命令行參數數組。通常用于實現需要從命令行獲取參數的功能。

第六種,返回值為int,有三個入參:

int?main(int?argc,char?*argv[],char?*envp[]

這種和第五種相似,但多了一個參數,用于獲取環境變量,這種形式多源于編譯器的擴展。但全局變量environ可以代替envp的作用,獲取或者設置環境變量可以使用getenv或putenv,因此也沒有必要使用該形式。

沒想到吧,仔細數一數竟然有這么種寫法?但是真相究竟如何?到底使用哪種呢?

真相大白

C89/C99/C11標準文檔中只提供了兩種main函數的寫法

int?main(void)?{?/*?...?*/?}int?main(int?argc,?char?*argv[])?{?/*?...?*/?}

也就是說,其他的寫法都是不符合標準的,有的是歷史遺留問題,有的是編譯器擴展,更有的不知從何而來。當然對于帶參數的寫法,其參數名可自定義。另外對于除標準提供的以外的寫法,不同的編譯器有不同的處理策略,有的可能編譯不過,有的可能報警告,但一個“正經”的編譯器是不會對標準提供的形式產生質疑的。

總結

至此,我們已經知道了c語言main函數的寫法,我們來總結一下前面的內容:

  • C標準只提供了兩種main的形式,即前面提到的第三種和第五種。
  • 為了代碼的通用可移植性,建議采用標準提供的形式。
  • 不需要命令行參數可采用第三種,需要命令行參數采用第五種。
  • 如果一個函數確定無需傳入任何參數,那么用void限定是一個不錯的選擇。
  • 函數沒有聲明返回值時,編譯器默認其返回值為int。

關注我:帶你遨游代碼的世界~

獲取更多:私信 “資料” 獲取

總結

以上是生活随笔為你收集整理的c语言srand函数怎么用_C语言的main函数到底该怎么写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。