搜索的用戶組別: 遊客[0級]
搜索選項 要有附件 作者搜索
搜索範圍
Dedo 論壇搜索系統
DC論壇影城 ad.vbox
香港易存網庫 [服務器租用|easyhost.com.hk] 域名 電郵 VPN 網頁寄存 快速穩定 雲端 Hosting Server 電話:(852)-21550486 / (86)-21-61979257 服務:[ 資訊, 電郵服務, 資訊網絡, 網頁儲存, 網頁設計, 網站設計, 網頁寄存, 網站寄存, 主機租用, 主機托管, 伺服器管理, 伺服器租用, 伺服器托管, 服務器租用, 服務器托管, 香港服務器托管, 香港服務器租用, 域名註冊, 網站地圖, 客戶優惠, 報章報導, web hosting, hosting, email service, web page design, web design, dedicated server, dedicated host, server management, server colocation, colocation, Virtual Host, MPLS, CDN, IPLC ]
返回列表 發帖

[轉貼] 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>
usingnamespacestd;

voidmain(intargc,char* argv[])
{
inti=0;
while(i<argc)
{
cout<<*argv++<//这里改写成cout<
i++;
}
cin.get();
}



在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以代码可以写成如下简单形式,简化代码提高效率。

#include <iostream>
#include <string>
usingnamespacestd;

voidmain(intargc,char* argv[])
{
while(*argv!=NULL)//这里写成while(*argv)也是正确的!
{
cout<<*argv++<}
cin.get();
}



最后我们说一下完整的命令行参数的原形:

void main(int argc,char* argv[],char* env[])



env用的很少,通常是用做事件的返回,这里就不讨论了,具体的可以查询书籍。

void main(int argc)省略其它参数的定义也是可以的,这样运行时候就直接返回参数个数学,而不返回其它。

运行命令行参数带有char* argv[]的时候,如果输入参数带有空格式,应该用双引号阔起来。


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

讲得很清楚
适合初学者
不错

TOP

我就是初学者,这里讲的比我看书里还细致。

TOP

这里讲的比我看书里还细致。

TOP

以前还没有注意到这点,thanks

TOP

讲的很好,讲的比书都全,有这就不用看书了

TOP

讲的很好啊,但是如果有参数在栈里面的介绍就更好了

TOP

適合想要帶參數的使用者參考,謝謝分享。

TOP

很好很实用 受教了~

TOP

很好很实用 受教了~

TOP

返回列表