C命令列引數 main函式的引數含義

2021-07-26 09:20:52 字數 1647 閱讀 9818

c中的命令列引數

又叫位置引數,它可以被傳到程式裡面,派各種用途

我們先來看main函式的引數

int main( intargc, char *argv[ ], char *envp[ ] )

main()函式的引數就是通過命令列來進行傳參的;

vs2013傳參方式:專案->屬性->配置屬性->除錯->命令列引數,然後進行傳參。

argc是指argv陣列中指標元素的個數;通過下面程式可以驗證。

argv存放的是通過命令列傳進來的乙個個內容的位址,但除過argv[0],通過下面程式可以發現arg[0]裡面存放的是當前執行程式的位址,還有argv最後乙個陣列裡面存放的是null;

envp裡存放正是系統的環境變數

msdn上是這樣解釋的:

#1:許多unix

作業系統

中普遍擴充套件了對envp陣列的支援;

#2:它儲存這使用者環境中的變數字串,以null結束。正因此,本文上面的例子用if(envp[i])來判斷是否列印完畢;

#3:envp可以是char*型別也可以是char**型別,本文上面的例子使用的是前者;如果使用寬字符集,則應使用wmain代替main,並使用wchar*或wchar**型別的envp。本文上面的例子使用tchar.h,使用了通用文字程式設計;

#4:envp一旦傳入,它就只是單純的字串陣列而已,不會隨著程式動態設定發生改變。可以使用putenv函式實時修改環境變數,也能使用getenv實時檢視環境變數,但是envp本身不會發生改變;

#5:這個版本對ansi c相容,但對ansi c++不相容。

envp用的不多,因此對它的作用並沒有argc和argv那樣清楚的理解。不過依據它的表現,筆者能夠想到的到envp的作用有兩點:

(1)為程式提供參考:程式的執行過程中需要參考環境變數作出決定,比如安裝程式必須知道系統預設的programfiles,它可以通過envp檢視到本系統的程式資料夾在programfiles=c:\program files,於是預設安裝目錄就設定定為c:\proogramfiles;

(2)如果程式在執行過程中對環境變數做了修改,在它退出時想要恢復,這時就可以參照envp中的資料將環境變數恢復到程式執行前的設定。

main函式命令列引數的使用

乙個程式的main 函式的可以包括兩個引數 通常情況下,將第乙個引數命名為argc,第二個引數為argv 當然引數名字可以換 由於字串陣列有兩種表達方式,因此,main函式存在兩種書寫方法 形式一 int main int argc,char argv 這裡使用char argv 2。形式二 int...

main函式命令列引數的使用

乙個程式的main 函式的可以包括兩個引數 通常情況下,將第乙個引數命名為argc,第二個引數為ar 當然引數名字可以換 由於字串陣列有兩種表達方式,因此,main函式存在兩種書寫方法 形式一 int main int argc,char ar 這裡使用char ar 形式二 int main in...

帶命令列引數的 main 函式詳解

c的設計原則是把函式作為程式的構成模組。main 函式稱之為主函式,乙個c程式總是從main 函式開始執行的。在最新的 c99 標準中,只有以下兩種定義方式是正確的 int main void 無引數形式 int main int argc,char argv 帶引數形式 int指明了main 函式...