int main (int argc,char *argv[]) 或者 int main (int argc,char **argv)
專注于為中小企業(yè)提供成都網站制作、成都網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)滄源免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。
其中第一個表示參數的個數;第二個參數中argv[0]為自身運行目錄路徑和程序名,argv[1]指向第一個參數、argv[2]指向第二個參數……
測試例子:
#include stdio.h#include string.h
int main(int argc,char *argv[])
{
printf("argc= %d\n",argc);
while(argc--)
{
printf("%s \n",*argv++);
}
return 0;
}
你問出這個問題,說明你還不明白函數參數傳遞的本質。原則上說,函數的實參和形參是必須一致的,但某些時候,在源代碼中,你的實參和形參可能會不一致,這種情況下,編譯器會嘗試進行隱性轉換,如果轉換不了,那么就會報錯。你也可以進行強制轉換,比如:int a(char* s, void* v);調用時,int* a, *b; a((char*)a, (void*)b);
這種強制轉換在實際使用中非常常見。
函數的參數調用,其實是一個出棧和入棧的過程。如果你的形參和實參不一致:類型不一致或者個數不一致,你可以用強制手段完成調用,但往往傳入函數的參數值,會發(fā)生錯誤,更嚴重的時候,會引發(fā)系統(tǒng)崩潰。
argc和argv是main函數的形式參數。這兩個形式參數的類型是系統(tǒng)規(guī)定的。如果main函數要帶參數,就是這兩個類型的參數;否則main函數就沒有參數。
堅持使用標準的意義在于:當你把程序從一個編譯器移到另一個編譯器時,照樣能正常運行。
由于是 int main( ..) 那么當時 應當返回 int 但是return 2.3 ;也能運行正確,這是因為編譯器自動轉換2.3為int,截斷后為return 2;??
如果寫為 return "abc";那么會報錯,??error C2440: “return”: 無法從“const char [4]”轉換為“int”。
變量名稱argc和argv是常規(guī)的名稱,當然也可以換成其他名稱。那么,實際參數是如何傳遞給main函數的argc和argv的呢?我們知道,C程序在編譯和鏈接后,都生成一個可執(zhí)行文件。也可以在命令行下帶參數執(zhí)行,命令行執(zhí)行的形式為:可執(zhí)行文件名稱 參數1 參數2 ... ... 參數n??蓤?zhí)行文件名稱和參數、參數之間均使用空格隔開。
如果按照這種方法執(zhí)行,命令行字符串將作為實際參數傳遞給main函數。具體為:
(1) 可執(zhí)行文件名稱和所有參數的個數之和傳遞給argc;
(2) 可執(zhí)行文件名稱(包括路徑名稱)作為一個字符串,首地址被賦給argv[0],參數1也作為一個字符串,首地址被賦給argv[1],... ...依次類推。
字符串arav[i](i=1,...argc-1)表式第 i 個程序參數,標準C 要求argv[argc]是個null指針,但在有些舊時編譯器中卻不是這樣的,argv向量以及它所指向的字符串必須是可以修改的,并且他們的值在程序執(zhí)行期間不能被編譯器或操作系統(tǒng)所修改。如果編譯器并不允許大小寫混合的字符串 ,則存儲在argv中的字符串必須采用小寫形式。
1.給main函數傳遞參數只有一種方式,即main(int argc, char *argv[])。第一個參數必須int,第二個(如果有的話)必須是char**或char *argv[]。
2.argc代表傳入參數的個數,argv是一個數組,每個元素都是一個char *。字符串arav[i](i=1,...argc-1)表式第 i 個程序參數,標準C 要求argv[argc]是個null指針。
3.main函數參數理論上支持“無數”個,且參數在進程內支持修改。
1、第一新建一個project。
2、輸入頭文件#include。
3、輸入主函數int main()。
4、接著輸入函數主體部分,變量必須先定義類型再使用。
5、輸入變量的值,注意這里scanf里變量名前必須加,結尾必須加分號。
6、輸入函數主體部分并輸出。
7、點擊編譯按鈕,查看是否有error。
8、接著直接運行,如此便轉換了。