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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言main()函数详解

發布時間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言main()函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C的設計原則是把函數作為程序的構成模塊。main()函數稱之為主函數,一個C程序總是從main()函數開始執行的。

?


一、main()函數的形式


在最新的 C99 標準中,只有以下兩種定義方式是正確的:

int main( void )? /* 無參數形式 */
{
??? ...
??? return 0;
}
int main( int argc, char *argv[] ) /* 帶參數形式 */
{
??? ...
??? return 0;
}
int指明了main()函數的返回類型 ,函數名后面的圓括號一般包含傳遞給函數的信息。void表示沒有給函數傳遞參數。關于帶參數的形式,我們等會討論。

瀏覽老版本的C代碼,將會發現程序常常以。

main()

這種形式開始。C90標準允許這種形式,但是C99標準不允許。因此即使你當前的編譯器允許,也不要這么寫。

你還可能看到過另一種形式。

void main()

有些編譯器允許這種形式,但是還沒有任何標準考慮接受它。C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地表示:void main( ) 的定義從來就不存在于 C++ 或者 C 。所以,編譯器不必接受這種形式,并且很多編譯器也不允許這么寫。

堅持使用標準的意義在于:當你把程序從一個編譯器移到另一個編譯器時,照樣能正常運行。

?


二、main()函數的返回值


從前面我們知道main()函數的返回值類型是int型的,而程序最后的 return 0; 正與之遙相呼應,0就是main()函數的返回值。那么這個0返回到那里呢?返回給操作系統,表示程序正常退出。因為return語句通常寫在程序的最后,不管返回什么值,只要到達這一步,說明程序已經運行完畢。而return的作用不僅在于返回一個值,還在于結束函數。

現在我們來做一個小試驗(注意:本人的系統是Windows XP, 編譯環境是TC)來觀察main()函數的返回值。編寫如下代碼并編譯運行:

//a.c
#include "stdio.h"
int main(void)
{
??? printf("I love you.");
??? return 0;
}
將這個文件保存為a.c,編譯運行后會生成一個a.exe文件。現在打開命令提示符,在命令行里運行剛才編譯好的可執行文件,然后輸入?? echo %ERRORLEVEL% ,回車,就可以看到程序返回 一個0 。如果把 return 0; 改為 return 99; ,那么很顯然,再次執行上述步驟以后你可以看到程序返回99。要是你這樣寫 return 99.99; 那還是返回99,因為99.99被傳給操作系統之前,被強制類型轉換成整數類型了。

現在,我們把a.c改回原來的代碼,然后再編寫另一個程序b.c:

//b.c
#include "stdio.h"
int main(void)
{
??? printf("
I’m too.");
??? return 0;
}
編譯運行后打開命令提示符,在命令行里輸入a&&b 回車,這樣你就可以看到《人鬼情未了》里面經典的愛情對白:

I love you.

I’m too.

&& 的含義是:如果 && 前面的程序正常退出,則繼續執行 && 后面的程序,否則不執行所以,要是把a.c里面的 return 0; 刪除或者改為 return 99; ,那么你只能看到 I love you. 。也就是說,程序b.c就不執行了。現在,大家該明白 return 0; 的作用了吧。

?


三、main()函數的參數

?


C編譯器允許main()函數沒有參數,或者有兩個參數 (有些實現允許更多的參數,但這只是對標準的擴展)。這兩個參數,一個是int類型,一個是字符串類型。第一個參數是命令行中的字符串數。按照慣例(但不是必須的),這個int參數被稱為argc(argument count)。 大家或許現在才明白這個形參為什么要取這么個奇怪的名字吧,呵呵!至于英文的意思,自己查字典吧。第二個參數是一個指向字符串的指針數組。命令行中的每個字符串被存儲到內存中,并且分配一個指針指向它。按照慣例,這個指針數組被稱為argv(argument value)。系統使用空格把各個字符串格開。一般情況下,把程序本身的名字賦值給argv[0],接著,把最后的第一個字符串賦給argv[1] ,等等。

現在我們來看一個例子:

//c.c
#include "stdio.h"
int main(int argc, char *argv[])
{
??? int count;
??? printf("The command line has %d arguments:
", argc - 1);
??? for(count = 1; count < argc ; count++)
??????? printf("%d: %s
", count, argv[count] );
??? return 0;
}
編譯運行,在命令行輸入c I love you 回車,下面是從命令行運行該程序的結果:

The command line has 3 arguments:

1:I


2:love


3:you


從本例可以看出,程序從命令行中接受到4個字符串(包括程序名),并將它們存放在字符串數組中,其對應關系:

argv[0]? ------>??? c(程序名)

argv[1]? ------>??? I


argv[2]? ------>??? love


argv[3]? ------>??? you


至于argc的值,也即是參數的個數,程序在運行時會自動統計,不必我們操心。

這個例子中,每個字符串都時一個單詞(字母),那既然是字符串,要把一句話當作參數賦給程序該怎么辦?你可以在命令行里這樣輸入 c? "I love you."? "I’m too."。程序運行結果:

The command line has 2 arguments:

1:I love you.

2:I’m too.

其對應關系:

argv[0]? ------>??? c(程序名)

argv[1]? ------>??? I love you.

argv[2]? ------>??? I’m too.

要注意的是,你在命令行的輸入都將作為字符串形式存儲于內存中。也就是說,如果你輸入一個數字,那么要輸出這個數字,你應該用%s格式而非%d或者其他。

再來看一個例子:

//d.c
#include "stdio.h"
int main(int argc, char *argv[])
{
??? FILE *fp;//FILE 是變量類型,實際上是C語言定義的標準數據結構,用于文件。 FILE *fp 是聲明,聲明fp是指針,用來指向FILE類型的對象。
??? fp = fopen(argv[1], "w");
??? fputs("I love you.", fp);
??? fclose(fp);
??? return 0;
}
編譯運行,打開命令行并輸入d love.txt 回車。這樣,打開d.c文件所在的目錄,你會發現多了一個名為 love.txt 的文件,打開后里面的內容正是世界上說的最多的那句話。

當然,你可能會說我不需要使用命令行參數就可以做到這些。是的,你當然可以。使用命令行參數的理由或許就是練習命令行用法,以備以后需要編寫基于命令行的程序。還有一個好處是,不需要C環境就可以運行已經編譯好的程序。比如,你把上面那個程序編譯后生成的d.exe發給你的女朋友,再告訴她怎么運行,這樣,你的女朋友可以用另一種方式體會到你對她的濃情蜜意。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C语言main()函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产成人精品亚洲精品色欲 | 久久大香| 女教师三上悠亚ssni-152 | 国产视频一区二区在线观看 | 亚洲午夜精品一区二区 | 国产亚洲精品久久久久久久久动漫 | 天天干狠狠干 | 91天天看| 黄色大片在线播放 | 777精品伊人久久久久大香线蕉 | av五十路| 被黑人猛躁10次高潮视频 | 又粗又大又硬又长又爽 | 人人爱人人 | 人人射人人爱 | 中文字幕在线观看一区二区 | 涩涩小网站| 国产精品国产成人国产三级 | 久av在线 | 丰满少妇xoxoxo视频 | 日韩欧美自拍 | 7777精品久久久久久 | 日日碰狠狠躁久久躁蜜桃 | 不卡黄色 | 亚洲在线精品视频 | 少妇的被肉日常np | 中文字幕第一页在线视频 | 91成人免费| 91片黄在线观 | 夫妻毛片| 成 年 人 黄 色 大 片大 全 | se婷婷| 国产黄色网 | av加勒比 | 两个人看的www视频免费完整版 | 欧美一区二区在线视频 | 欧美黄色特级片 | 午夜极品视频 | 狠狠干夜夜爽 | 涩涩片影院 | www.好了av | av观看网站| 91久久爽久久爽爽久久片 | 日本美女毛片 | 午夜av成人 | 亚洲成人免费看 | 午夜不卡福利 | 久久久视屏 | 亚洲色图激情小说 | 成人av资源站 | 日韩欧美中文字幕一区 | 日韩精品电影一区 | 一本加勒比波多野结衣 | 五月天国产 | 国产a自拍 | 黄色wwww| 五月情网 | 精品久久久久久久无码 | 人人草人人 | 久久密av | jjzz黄色片 | 污版视频在线观看 | 免费男女视频 | 美女黄色在线观看 | 抽插丰满内射高潮视频 | 午夜精品久久久久久久久久 | jzzjzz日本丰满少妇 | 最新中文字幕第一页 | 欧美黄色性 | 九色蝌蚪porny| 婷婷综合在线 | 自拍偷拍欧美激情 | 91资源在线观看 | 亚洲调教欧美在线 | 射综合网 | 操夜夜 | 性插动态视频 | av大片网址| 少妇高潮久久久久久潘金莲 | 99夜色 | 不卡视频一区 | 人妻丰满熟妇无码区免费 | 久久国产精品综合 | 偷拍一区二区三区四区 | 天天免费看av | 中文字幕国产视频 | 国产三级黄色 | 久久久久久69 | 夜夜操狠狠干 | av手机免费观看 | 国产三级自拍 | 亚洲AV永久无码国产精品国产 | 男人av网 | 日本高清视频www夜色资源 | 在线观看一区二区三区视频 | 国产69久久 | 天堂中文av| 在线国产中文字幕 | 免费国产一区二区三区 |