每個c程式都必須有乙個main函式,main函式又稱為主函式,是執行程式的起點,它被稱之為函式,是否會像平時使用函式時需要自己的引數呢?
答案是肯定的,那麼他都有那些引數呢?
main函式的在vs2017環境下除錯,可以看到main函式裡的三個引數
可以看到,main函式裡面有三個引數:
_argc_argv_get_initial_narrow_environment(維護環境變數)main函式在被呼叫的時候,這三個引數也傳向main,只是沒有被main函式接到,也沒用。那麼在呼叫main函式時,在main函式裡面寫相對應的引數,main函式就可以接到這些值。
為了詳細了解main函式的引數,寫出以下**:
#include
intmain
(int _argc,
char
*_argv,
char
*_get_initial_narrow_environment)
return0;
}
程式輸出如下圖所示:
這是可執行程式的名字。
滑鼠右擊工程的名字main->屬性->配置屬性->除錯->命令列引數,修改命令列引數並且應用如下:
再來執行程式,輸出如下圖所示:
注意到工程的命令列引數可以通過**_argv這個陣列獲取到,命令列引數的個數可以由_argc**獲取到。
注:_argv陣列的最後乙個元素存放了乙個null的指標。
**改了如下:
int
main
(int _argc,
char
*_argv,
char
*_get_initial_narrow_environment)
return0;
}
輸出結果如下:
驗證得出_argv陣列的最後乙個元素存放了乙個null的指標。
了解了前面連個引數,最後乙個引數是什麼呢?
寫出一下**:
int
main
(int _argc,
char
*_argv,
char
*_get_initial_narrow_environment)
return0;
}
輸出結果如下:
結果顯示都是環境變數(內容太多,擷取部分)。
注:_get_initial_narrow_environment陣列的最後乙個元素存放了乙個null的指標。
1. _argc
_argc是個整型變數,表示命令行引數的個數(含第乙個引數)。2._argv
_argv是個字元指標的陣列,每個原元素都是乙個字元指標,指向乙個字串。這些字串就是命令列中的每乙個引數(字串)。3._get_initial_narrow_environment
_get_initial_narrow_environment是字元指標的陣列,陣列的每乙個原元素是乙個指向乙個環境變數(字串)的字元指標。####4.舉個例子
#include
#include
intadd
(int a,
int b)
intsub
(int a,
int b)
intmul
(int a,
int b)
intdiv
(int a,
int b)
intmain
(int _argc,
char
*_argv,
char
*_get_initial_narrow_environment)
switch(*
(_argv[1]
+1))
printf
("ret=%d\n"
, ret)
;return0;
}
命令列引數改為:
執行結果:
_argc,_argv描述命令列引數息,_get_initial_narrow_environment描述環境變數
如有不足之處,歡迎指正!!
C語言main函式引數
c語言main函式引數 int main int argc char argv 或者是 int main int argc,char argv argc 命令列總的引數的個數 以空白符分隔 argv 字串指標陣列 陣列內存放指向char型別的指標 用來存放指向字串引數的指標陣列,每個元素指向乙個引數...
main函式引數解析
int argc,char ar agrc表示引數的個數 ar 儲存引數 這個函式的意思是逐一輸出引數 實際上,main函式也可以帶引數。帶引數main函式的定義格式如下 void main int argc,char ar argc和ar 是main函式的形式引數。這兩個形式引數的型別是系統規定的...
C語言main函式的引數
一般的的main函式都是不帶引數的。因此main 後的括號都是空括號。實際上,main函式可以帶引數,這個引數可以認為是main函式的形式引數。c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv c語言還規定...