int main( int argc , char* argv[] ) 的问题

[复制链接]
查看11 | 回复2 | 2011-2-14 05:59:53 | 显示全部楼层 |阅读模式
一般的资料都说argc是参数个数,argv是指向参数的指针数组,argv[0]指向的是程序名字符串,我想问下这个字符串是不是一定就是包含这个main函数的可执行文件的名字。比如说我写了一个测试文件,test_arg.c,然后生成了一个exe文件test_arg.exe,里面包含printf( %s ,argv [ 0 ] )这样的语句,那么假如我在命令行输入test.exe 1 2 3,那么argc为4,argv[0]是test.exe。那么在其他情况下会不会出现argv[0]不是在命令行输入的程序的情况?把这个传给main函数有什么用?貌似参数比较有用吧?因为如果要执行这个main函数,就必须在命令行键入exe文件的名字,再把这个传给main函数是做什么啊?
那是不是传给main函数的argv[0]一定是包含这个main函数的可执行文件的名称?

回复

使用道具 举报

千问 | 2011-2-14 05:59:53 | 显示全部楼层
完整地解答这个问题:argc=argument count; 自动计算命令行有几个参数argv=argument vector; 将命令行的参数名字分别置于各个字符串指针中。注意这里的类型:argc是整数类型,不多解释。char* argv[]是字符串指针。用你的例子来说,test.exe 1 2 3,那么argc=4;argv[0]="test.exe"; argv[1]="1"; argv[2]="2"; argv[3]="3";至于应用的话,举个很常见的例子:比方说,你的main函数需要打开一个文件,对文件进行操作,而且希望用户在命令行的第二个位置就直接输入(i.e., argv[1]的位置),那么可以写如
回复

使用道具 举报

千问 | 2011-2-14 05:59:53 | 显示全部楼层
在VC下可生成DEBUG或RELEASE模式的exe文件。由于argv [ 0 ] 包含了路径名,这样可通过它知道当前执行的是哪一个模式的exe文件。 是的,传给main函数的argv[0]一定是包含这个main函数的可执行文件的名称。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行