深度解析main函式引數
阿新 • • 發佈:2018-12-20
通常,我們所見到的main函式基本是下面這種形式:
int main( )
{
program-statements;
}
其實,mian函式是有引數的。本文將圍繞main函式的引數展開詳細的敘述,下面是main函式引數的原型:
int main( int argc, char *argv[ ], char *envp[ ] )
{
program-statements;
}
這裡的三個引數分別是: 第一個引數:argc是個整型變數,表示命令列引數的個數(包含第一個引數); 第二個引數:argv是個字元指標的陣列,每個元素是一個字元指標,指向一個字串。這些字串就是命令列中的每一個引數(字串); 第三個引數:envp是字元指標的陣列,陣列的每一個元素時一個指向一個環境變數(字串)的指標。
首先敘述第一個引數argc和第二個引數argv。假設我寫了如下的程式碼:
#include <stdio.h>
int main(int argc, char* argv[], char* envp[])
{
int i = 0;
for (i = 0; i < argc; i++)
{
printf("%s\n", argv[i]);
}
system("pause");
return 0;
}
在執行這個可執行程式之前,我加入了auo,aduo1和aduo2三個引數,如圖: 執行結果如下:
結合程式碼可以這樣解釋它們(argc控制argv): 對於第三個引數envp的解釋,我首先敘寫了以下程式碼:
#include <stdio.h>
int main(int argc, char* argv[], char* envp[])
{
int i = 0;
while(envp[i] != NULL)
{
printf("%s\n", envp[i]);
i++;
}
return 0;
}
執行結果如圖: 列印結果都為環境變數,所以對於envp的作用可解釋為維護環境變數。