本文目錄一覽:
C語言深度總結[全面認識main函數傳遞參數]
argc和argv是main函數的形式參數。這兩個形式參數的類型是系統規定的。如果main函數要帶參數,就是這兩個類型的參數;否則main函數就沒有參數。
堅持使用標準的意義在於:當你把程序從一個編譯器移到另一個編譯器時,照樣能正常運行。
由於是 int main( ..) 那麼當時 應當返回 int 但是return 2.3 ;也能運行正確,這是因為編譯器自動轉換2.3為int,截斷後為return 2;
如果寫為 return “abc”;那麼會報錯, error C2440: 「return」: 無法從「const char [4]」轉換為「int」。
變量名稱argc和argv是常規的名稱,當然也可以換成其他名稱。那麼,實際參數是如何傳遞給main函數的argc和argv的呢?我們知道,C程序在編譯和鏈接後,都生成一個可執行文件。也可以在命令行下帶參數執行,命令行執行的形式為:可執行文件名稱 參數1 參數2 … … 參數n。可執行文件名稱和參數、參數之間均使用空格隔開。
如果按照這種方法執行,命令行字符串將作為實際參數傳遞給main函數。具體為:
(1) 可執行文件名稱和所有參數的個數之和傳遞給argc;
(2) 可執行文件名稱(包括路徑名稱)作為一個字符串,首地址被賦給argv[0],參數1也作為一個字符串,首地址被賦給argv[1],… …依次類推。
字符串arav[i](i=1,…argc-1)表式第 i 個程序參數,標準C 要求argv[argc]是個null指針,但在有些舊時編譯器中卻不是這樣的,argv向量以及它所指向的字符串必須是可以修改的,並且他們的值在程序執行期間不能被編譯器或操作系統所修改。如果編譯器並不允許大小寫混合的字符串 ,則存儲在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函數參數理論上支持「無數」個,且參數在進程內支持修改。
c語言中main函數的參數
main函數可以不帶參數,也可以帶參數,這個參數可以認為是 main函數的形式參數。
C語言規定main函數的參數只能有兩個,還規定argc(第一個形參)必須是整型變量,argv( 第二個形參)必須是指向字符串的指針數組。加上形參說明後,main函數的函數頭應寫為:
int main (int argc,char *argv[])
由於main函數不能被其它函數調用,因此不可能在程序內部取得實際值。那麼,在何處把實參值賦予main函數的形參呢? 實際上,main函數的參數值是從操作系統命令行上獲得的。當我們要運行一個可執行文件時,在DOS提示符下鍵入文件名,再輸入實際參數即可把這些實參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\可執行文件名 參數 參數……
c語言和c++中主函數main()的括號中為什麼可以有參數
這是因為:主函數main並非程序的真正入口!在編譯器對你的工程文件進行編譯時,它是先找到你的main函數,然後根據main函數類型,把一段前綴入口程序預先編譯,再讓它去調用main函數.當你的main函數需要參數時,它就編譯有參數main函數調用,反之則編譯無參數main函數調用.所以編譯器是自動識別你的main函數類型的!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/245812.html