程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C/C++中命令行參數的原理

C/C++中命令行參數的原理

編輯:關於C++

很早以前的dos應用程序中,我們經常會用命令行參數執行應用程序例如:

copy c:\1.txt d:\

在c/c++中,命令行參數的傳遞是利用main進行形參傳遞實現的

前面的教程中我們對面都進行了void main()或者是void main(void)的定義,這表示main不返回任何類型,和main不帶有任何參數,但在缺剩狀態下mian()這樣形式下,形式參數一直是存在在棧空間內的只是隱藏了起來。

為了實現命令行參數我們將使用main(int argc,char* argv[])這樣的形式進行定義argc和argv可以換成你自己喜歡的名稱,不一定要用argv,argc這些形式只是習慣而已,char* argv[]我們前面已經講述過,這就是一個指向指針數組,argv就是一個指針數組名,argv不是常量指針,而是具備變量特性的變量指針,它是可以移動的,由此我們可以改寫成char* *argv也是正確的,int argc這個定義返回的將是參數的個數所以標記為整形(int)。

#include <iostream>
#include <string>
using namespace std;
void main(int argc,char* argv[])
{
int i=0;
while(i<argc)
{
cout<<*argv++<<endl;//這裡改寫成cout<<argv[i]<<endl;也是正確的
i++;
}
cin.get();
}

在命令行參數的提交中,系統會自動給指針數組後加上一個NULL,所以代碼可以寫成如下簡單形式,簡化代碼提高效率。

#include <iostream>
#include <string>
using namespace std;
void main(int argc,char* argv[])
{
while(*argv!=NULL)//這裡寫成while(*argv)也是正確的!
{
cout<<*argv++<<endl;
}
cin.get();
}

最後我們說一下完整的命令行參數的原形:void main(int argc,char* argv[],char* env[])

env用的很少,通常是用做事件的返回,這裡就不討論了,具體的可以查詢書籍。

void main(int argc)省略其它參數的定義也是可以的,這樣運行時候就直接返回參數個數學,而不返回其它。

運行命令行參數帶有char* argv[]的時候,如果輸入參數帶有空格式,應該用雙引號闊起來。

例如 test4.exe "hello world!" ha ha

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved