C 語(yǔ)言中的 main() 函數(shù)參數(shù)
作為 C 語(yǔ)言程序的入口 mian 函數(shù)很多時(shí)候會(huì)在啟動(dòng)的時(shí)候從外界傳入一些參數(shù)到程序內(nèi)部。
1. main 函數(shù)的參數(shù)
其實(shí)從函數(shù)角度的講, mian 函數(shù)和其它函數(shù)沒有什么特別之處。只不過這個(gè)函數(shù)是又操作系統(tǒng)直接引導(dǎo)的,在大多數(shù)的情況下是程序的入口。因此而顯得特殊。
之前我們介紹的程序中都是沒有參數(shù)的 mian 函數(shù),這里我們看一下一般情況下 mian 函數(shù)的參數(shù)情況。
int main(int argc, char *argv[]);
或者
int main(int argc, char **argv);
這里面的第一個(gè)參數(shù)是參數(shù)的數(shù)量,第二個(gè)是包含參數(shù)的數(shù)組。第一個(gè)參數(shù)的數(shù)量其實(shí)就是第二參數(shù)數(shù)組中包含的參數(shù)的數(shù)量。
那么如何使用這個(gè) main 函數(shù)的參數(shù)呢?
只要在啟動(dòng)程序的時(shí)候在后面依次用空格隔開需要傳遞進(jìn)去的參數(shù)就可以了。
2. 示例
#include <stdio.h>
int main(int a, char *b[])
{
printf("Arguments Count: %d\n", a);
for (int i = 0; i < a; ++i)
printf("Argment %d: %s\n", i, b[i]);
return 0;
}
程序中的變量名沒有按照約定,因?yàn)檫@里是想給大家展示一下變量名是隨意的,不會(huì)影響運(yùn)行結(jié)果。因?yàn)楹芏鄷袥]有這方面的說明,很容易給初學(xué)者造成困惑。這里只是 C 語(yǔ)言中。在有的時(shí)候會(huì)出現(xiàn)約定大于配置的情況。這個(gè)不在 C 語(yǔ)言課程的討論范圍內(nèi)。
運(yùn)行結(jié)果:
utopia@DESKTOP:~$ ./test
Arguments Count: 1
Argment 0: ./test
utopia@DESKTOP:~$ /home/utopia/test
Arguments Count: 1
Argment 0: /home/utopia/test
utopia@DESKTOP:~$ ./test a da sds
Arguments Count: 4
Argment 0: ./test
Argment 1: a
Argment 2: da
Argment 3: sds
這段程序首先直接打印出變量 a 的數(shù)值,也就是傳入 main 函數(shù)的變量的數(shù)量。然后采用循環(huán)方式,一次輸出數(shù)組中存儲(chǔ)的值。
從上面的運(yùn)行結(jié)果可以看出。作為第一個(gè)變量傳入的是程序的名稱。其余變量在其后面依次傳入。
3. 小結(jié)
作為整個(gè)程序的門戶, main 函數(shù)肩負(fù)著將啟動(dòng)命令行中的參數(shù)傳入程序內(nèi)部的任務(wù)。
沒有額外參數(shù)輸入的情況,默認(rèn)傳入的參數(shù)只有一個(gè),就是程序的名稱名稱,其實(shí)更確切一點(diǎn)包含前面路徑的程序名稱。
如果在命令行啟動(dòng)的時(shí)候輸入了其它的參數(shù),那么這些參數(shù)會(huì)依次進(jìn)入?yún)?shù)數(shù)組中。