1. 程式人生 > >對int main(int argc,char **argv)的理解

對int main(int argc,char **argv)的理解

執行帶引數的ROS節點時,發現命令列引數對應於int main(int argc,char **argv)中的引數,因此對main函式中的兩個引數做了簡單的研究。

下面的博文源於如下連結
https://www.cnblogs.com/ruixingw/p/3705918.html

argc是命令列總的引數個數
argv[]為儲存命令列引數的字串指標,其中第0個引數是程式的全名,以後的引數為命令列後面跟的使用者輸入的引數,argv引數是字串指標陣列,其各元素值為命令列中各字串(引數均按字串處理)的首地址。 指標陣列的長度即為引數個數argc。陣列元素初值由系統自動賦予。比如:
int main(int argc, char* argv[])
{
int i;
for (i = 0; i< argc; i++)
cout<< argv[i]<< endl;
cin>>i;
return 0;
}
執行時敲入
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd
輸出如下:
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE
aaaa
bbb
ccc
ddd


char *argv[]是一個字元陣列,其大小是int argc,主要用於命令列引數 argv[] 引數,數組裡每個元素代表一個引數;
比如你輸入
test a.c b.c t.c

argc = 4

argv[0] = “test”
argv[1] = “a.c”
argv[2] = “b.c”
argv[3] = “t.c”


argc記錄了使用者在執行程式的命令列中輸入的引數的個數。
arg[]指向的陣列中至少有一個字元指標,即arg[0].他通常指向程式中的可執行檔案的檔名。在有些版本的編譯器中還包括程式
檔案所在的路徑。