命令列引數小結

2021-09-26 16:28:19 字數 1357 閱讀 7528

說來慚愧,對於命令列引數這個概念接觸的比較少,可能也是之前一直使用ide進行開發程式的原因吧,對於c程式,總是從main函式開始執行,main函式的原型如下:

int main(int argc, char *ar**);
這裡面我們可以發現main函式的特點:

(1)有兩個形參,argc和 ar**。

(2)返回值為 int,有符號整型,我們常常在main函式的最後,新增 return 0或者exit(0).

所謂命令列引數,就是我們的main程式執行時,通過shell等命令傳送給main的 引數,比如乙個程式的可執行程式為:test,那麼在unix下,執行該程式的命令為:

./test arg1 arg2 arg3
這相當於執行test,並且傳送給main 3個引數:arg1,arg2,arg3,這種設計也是有道理的,普通函式,我們可以通過呼叫函式時直接傳送,但是main函式,是c程式的開頭(這裡不抬槓,因為有些是從彙編startup開始執行的,然後再跳轉到main),所以不能像普通函式那樣進行呼叫,所以需要另一種方式傳遞引數,命令列引數的功能就是實現給main函式傳遞引數,我們只需要執行程式時,在後面按順序以空格 間隔,編寫引數即可。

兩個引數的含義:

argc :命令列引數的數目,這裡有個注意,編譯器預設argc最小為1,也就是main函式的第乙個命令列引數一定是這個可執行程            序的路徑,這個路徑存放在ar**[0]中。

ar**:  是指向引數的各個指標構成的陣列,也就是指標陣列,也可以認為是雙指標,這個也好理解,指標是個位址,位址是                   個「頭」,後面可以跟n多位元組。

我們來看乙個程式例程:

#include int

main(int argc, char *ar**)

我們編譯該程式,我這裡通過gcc來編譯,然後執行程式:

通過上面的執行結果我們可以發現,傳入了2個引數,但是列印了3個引數,驗證了前面的 預設情況,而且不管我們傳遞的引數是否包含了「 」(雙引號),預設都是字串。

小結:

(1)命令列引數 argc 最小為1, 也就是預設有1個命令列引數為:可執行程式的 路徑。

(2)ar**[0] 預設存放 可執行程式的路徑,自己傳遞的命令列引數從 ar**[1]開始儲存。

(3)命令列引數為 字串,不管是否新增 「 」,都按字串處理。

命令列 Git Bash命令列小結

展示當前完整路徑pwd 建立資料夾mkdir 建立檔案touch 刪除資料夾rm rf 刪除檔案rm 重新命名mv 展示當前路徑下檔案 除了隱藏檔案 ls 展示當前路徑下所有檔案ls a 展示當前路徑下所有檔案以及詳細資訊ls al 轉至某目錄cd 根目錄 上級目錄.當前目錄.檢視檔案cat 檔名稱...

命令列引數

c 程式設計師參考 main方法可以使用引數,在這種情況下它採用下列形式之一 static int main string args static void main string args main方法的引數是表示命令行引數的string陣列。通常通過測試length屬性來檢查引數是否存在,例如 ...

命令列引數

c程式中的mian具有兩個形參。int main int argc,char argv argc 命令列引數的數目 argv 指向一組引數值的第乙個元素 每個元素都是指向乙個引數文字的指標 指標陣列 每個元素都是乙個字元指標,陣列末尾是乙個null指標,argc的值和這個null都用於確定實際傳遞了...