新聞中心
C語言深度總結[全面認識main函數(shù)傳遞參數(shù)]
argc和argv是main函數(shù)的形式參數(shù)。這兩個形式參數(shù)的類型是系統(tǒng)規(guī)定的。如果main函數(shù)要帶參數(shù),就是這兩個類型的參數(shù);否則main函數(shù)就沒有參數(shù)。
為沁源等地區(qū)用戶提供了全套網頁設計制作服務,及沁源網站建設行業(yè)解決方案。主營業(yè)務為成都網站設計、成都做網站、沁源網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
堅持使用標準的意義在于:當你把程序從一個編譯器移到另一個編譯器時,照樣能正常運行。
由于是 int main( ..) 那么當時 應當返回 int 但是return 2.3 ;也能運行正確,這是因為編譯器自動轉換2.3為int,截斷后為return 2;??
如果寫為 return "abc";那么會報錯,??error C2440: “return”: 無法從“const char [4]”轉換為“int”。
變量名稱argc和argv是常規(guī)的名稱,當然也可以換成其他名稱。那么,實際參數(shù)是如何傳遞給main函數(shù)的argc和argv的呢?我們知道,C程序在編譯和鏈接后,都生成一個可執(zhí)行文件。也可以在命令行下帶參數(shù)執(zhí)行,命令行執(zhí)行的形式為:可執(zhí)行文件名稱 參數(shù)1 參數(shù)2 ... ... 參數(shù)n。可執(zhí)行文件名稱和參數(shù)、參數(shù)之間均使用空格隔開。
如果按照這種方法執(zhí)行,命令行字符串將作為實際參數(shù)傳遞給main函數(shù)。具體為:
(1) 可執(zhí)行文件名稱和所有參數(shù)的個數(shù)之和傳遞給argc;
(2) 可執(zhí)行文件名稱(包括路徑名稱)作為一個字符串,首地址被賦給argv[0],參數(shù)1也作為一個字符串,首地址被賦給argv[1],... ...依次類推。
字符串arav[i](i=1,...argc-1)表式第 i 個程序參數(shù),標準C 要求argv[argc]是個null指針,但在有些舊時編譯器中卻不是這樣的,argv向量以及它所指向的字符串必須是可以修改的,并且他們的值在程序執(zhí)行期間不能被編譯器或操作系統(tǒng)所修改。如果編譯器并不允許大小寫混合的字符串 ,則存儲在argv中的字符串必須采用小寫形式。
1.給main函數(shù)傳遞參數(shù)只有一種方式,即main(int argc, char *argv[])。第一個參數(shù)必須int,第二個(如果有的話)必須是char**或char *argv[]。
2.argc代表傳入參數(shù)的個數(shù),argv是一個數(shù)組,每個元素都是一個char *。字符串arav[i](i=1,...argc-1)表式第 i 個程序參數(shù),標準C 要求argv[argc]是個null指針。
3.main函數(shù)參數(shù)理論上支持“無數(shù)”個,且參數(shù)在進程內支持修改。
c語言中main函數(shù)的參數(shù)
main函數(shù)可以不帶參數(shù),也可以帶參數(shù),這個參數(shù)可以認為是 main函數(shù)的形式參數(shù)。
C語言規(guī)定main函數(shù)的參數(shù)只能有兩個,還規(guī)定argc(第一個形參)必須是整型變量,argv( 第二個形參)必須是指向字符串的指針數(shù)組。加上形參說明后,main函數(shù)的函數(shù)頭應寫為:
int main (int argc,char *argv[])
由于main函數(shù)不能被其它函數(shù)調用,因此不可能在程序內部取得實際值。那么,在何處把實參值賦予main函數(shù)的形參呢? 實際上,main函數(shù)的參數(shù)值是從操作系統(tǒng)命令行上獲得的。當我們要運行一個可執(zhí)行文件時,在DOS提示符下鍵入文件名,再輸入實際參數(shù)即可把這些實參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\可執(zhí)行文件名 參數(shù) 參數(shù)……
C語言中“實際參數(shù)”“形式參數(shù)”的概念是什么?
形式參數(shù)就是定義函數(shù)時候的參數(shù)表,只是定義了調用時參數(shù)的個數(shù)、類型和用來引用的名字,并沒有具體的內容。形參未被調用時,不占存儲單元。形參只在調用過程中占用存儲單元。
在調用函數(shù)時,給形參分配存儲單元,實參可以是常量、變量或者表達式,且要與形參類型一致!而且實參要有確定的值,在調用過程中實參將值賦給形參,并將實際參數(shù)對應的數(shù)值傳遞給形式參數(shù);
調用結束后,形參單元被釋放,實參單元仍然保留
并且維持原值。所以說,實參是調用函數(shù)傳遞的具體數(shù)據。實參對形參數(shù)據傳遞時時單向傳遞。在存儲單元中是不同的單元。
下面這段程序中
#includestdio.h
int
fun(int
a,int
b)
{a+=10;
b=a+b*2;
return
a+b;
}
void
main()
{
int
x=3,y=5,z;
z=fun(x,y);
printf("%d
%d
%d\n",x,y,z);
}
a和b都是形式參數(shù),x和y都是實際參數(shù)。
程序從主函數(shù)開始運行,等到運行到z=fun(x,y)開始調用被調用函數(shù),以被調用函數(shù)的形式進行運算,然后把計算的值返回后賦值給z,這樣一個運算就算完成了。在調用過程中,形參a和b的值都發(fā)生了改變,但是在main函數(shù)中,x和y的值都未發(fā)生變化。所以說實參向形參的值的傳遞是單向的。
C語言主函數(shù)后面的的括號里的參數(shù)是什么意思?
void表示參數(shù)為空,即這個函數(shù)不含參數(shù),比如定義一個print函數(shù)。
程序執(zhí)行總是從main函數(shù)開始,如果有有其他函數(shù),則完成對其他函數(shù)的調用后再返回到主函數(shù),最后由main函數(shù)結束整個程序。在執(zhí)行程序時,由系統(tǒng)調用main函數(shù)。main 函數(shù)是在程序啟動中完成對具有靜態(tài)存儲期的非局部對象的初始化之后被調用的。它是程序在有宿主 (hosted)環(huán)境(亦即有操作系統(tǒng))中所指定的入口點。自立程序(啟動加載器,操作系統(tǒng)內核,等等)的入口點則是由實現(xiàn)定義的。
擴展資料:
主函數(shù)的兩個形參形式中的形參,允許從執(zhí)行環(huán)境中傳遞任意的多字節(jié)字符串(它們通常被稱為命令行參數(shù)),各個指針 argv.. argv[argc-1] 指向每個這些字符串的第一個字符。argv[0] 是指向一個表示用于執(zhí)行該程序自身的名字的空結尾多字節(jié)字符串(或者當執(zhí)行環(huán)境不支持時,為空字符串 "")的開頭字符的指針。
這些字符串是可以改動的,雖然對它們的改動并不會被傳回給執(zhí)行環(huán)境:比如可以用 std::strtok 來使用它們。由 argv 所指向的數(shù)組的大小至少為 argc+1,其最后一個元素 argv[argc] 保證為一個空指針。
新聞標題:c語言主函數(shù)的形式參數(shù) c語言主函數(shù)的形式參數(shù)是什么
URL網址:http://www.dlmjj.cn/article/dogosco.html