Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207257
  • 博文数量: 59
  • 博客积分: 476
  • 博客等级: 下士
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-02 13:12
文章分类
文章存档

2012年(3)

2011年(56)

我的朋友

分类: LINUX

2011-12-03 19:09:51

问:int main(int argc, char* argv[])里的(int argc, char* argv[])是什么意思?为什么要用这个?

 

答1:

很多程序都是带参数运行的,比如WINDOWS命令行下的很多实用程序。参数增加了程序的灵活性。
你可以在“开始”->“运行”中输入cmd进入命令行。
比如一个叫做del的命令,(删除文件),其实就是del.exe,它带参数的,完整的命令格式可以是
del readme.txt
这个命令将删除当前路径下的readme.txt文件(如果有的话);
此时,运行的程序就是del.exe,而readme.txt就是它的参数,
假设del程序的main函数原型为 int main(int argc, char* argv[]),那么
argc = 1,(1个参数)
argv[0] = “readme.txt”(接收的字符串);
假设一个程序的main函数不带任何参数,那么很显然,它仍可以运行,只是,不接收参数罢啦

 

 

答2:

void main(int argc, char* argv[ ]) 
假设程序编译成为 cp.exe
然后在命令行中输入
c:\>cp.exe doc1.txt doc2.txt

这行中有三个字符串分别为 cp.exe doc1.txt doc2.txt
则argc为3,即argc是命令行中参数的个数。
char *argv[]为一个指像字符串的数组。
argv[0]="cp.exe"
argv[1]="doc1.txt"
argv[2]="doc2.txt"

即命令行中各各字符串保存在 *argv[]中

归纳:

简单说,这两个就是用于接受参数和记录参数信息的。

因为在LINUX或DOS中, 使用命令后面一般都加上参数等,如:c:\>cp.exe doc1.txt doc2.txt

 

 

举个例子: 比如我们运行 ./a.out ni hao ma? 那么操作系统会把 ./a.out ni hao ma? 这4个字符串分别装入argv[0]---argv[3], 并把argc 设置为4. int main(int argc, char* argv[]) { cout << argv[2]; return 0; } 上面程序输出结果就是 hao。 可见argv里面盛放的是程序名路径,及其参数!

 

转载:http://www.cnblogs.com/linshui91/archive/2010/09/29/1838762.html

阅读(2143) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~