main(int argc,char*argv[])
为什么一下程序输出1 不是2呢?
#include <stdio.h>
main(int argc,char*argv[])
{
argv[0]="hello";
argv[1]="mornig";
printf("%d",argc);
getch();
}
问题点数:20、回复次数:11Top
1 楼lovedna(有间道)回复于 2006-02-06 11:44:42 得分 0
因为运行的时候命令行参数只有一个,就是程序本身的路径
#include <stdio.h>
main(int argc,char*argv[])
{
argv[0]="hello";
argv[1]="mornig";
printf("%d",argc);
printf("%s",argv);
getch();
}
看看这样会输出什么:)
Top
2 楼pagechen(天外飞来的仙)回复于 2006-02-06 11:44:57 得分 2
main(int argc,char*argv[])
argc和argv是由命令行解析传入的参数。(可以想象为由调用main函数的一个函数产生argc,argv)
假如程序名 abc.exe
运行 abc.exe传入argc=1 argv 是一个指针数组的首地址。而这个指针数组第一个元素是指向("abc.exe")的指针。
你给argv[]重新负值怎么会影响argc的值呢?Top
3 楼runall(龙行天下)回复于 2006-02-06 11:45:55 得分 0
只有程序名当然是1了Top
4 楼popy007(Twinsen)回复于 2006-02-06 12:03:06 得分 3
main(int argc,char*argv[])
{
argv[0]="hello";
argv[1]="mornig";
}
argc和argv通过命令行传进来的,你用
argv[0]="hello";
argv[1]="mornig";
修改argv以前,argc就确定了。Top
5 楼dragonatneight(á)回复于 2006-02-06 12:07:08 得分 3
运行的时候命令行参数只有一个,就是程序本身的路径,所以为1呀!建议你看看C语言有关这方面的书!如《C语言编程宝典之一》.
Top
6 楼wangzhanlili(小木头)回复于 2006-02-06 12:08:31 得分 0
只有程序名当然是1了
Top
7 楼wangzhanlili(小木头)回复于 2006-02-06 12:09:06 得分 0
这样就是 2
abc.exe 1111Top
8 楼huanmm(射手小王子)回复于 2006-02-06 17:03:44 得分 10
void myFunction(int myc, char *myv[])
{
myv[0]="hello";
myv[1]="mornig";
}
main(int argc,char*argv[])
{
int myc = 3;
char * myv[] = {"abc", "def", "ghi"};
myFunction(myc, myv);
argv[0]="hello";
argv[1]="mornig";
printf("%d",argc);
printf("%s",argv);
getch();
}
你说,在myFunction里面,参数myv被修改了,参数myc的值会自动更改吗?
main函数是同样的道理,只不过main函数是被系统调用的,调用它的程序你看不见
而且你这样做是很危险的,因为argv的长度有可能只为1,argv[1]指向的是神秘莫测的黑暗空间,呵呵。
总之,main函数的参数是入口参数,用来接收信息,而不要去给参数赋任何值。
Top
9 楼dearlee_01(街头老狗)回复于 2006-02-06 17:31:46 得分 0
use your imaginationTop
10 楼Tiwen818(Tiwen)回复于 2006-02-06 17:32:08 得分 2
程序运行本身时自身算一个参数。argv[0]也就是参数的地址。如果还有参数传进来。argc会判断Top
11 楼qinyuanfeng(沁园枫)回复于 2006-02-07 12:11:20 得分 0
学习……Top
相关问题
- 关于main(int argc,char *argv[])
- ?? int main(int argc,char **argv)
- void main(int argc,char *argv[])
- 关于main(int argc,char*argv[])地题
- main(int argc,char **argv)什么意思?
- 关于int main(int argc,char* argv[])
- 请问main(int argc, char *argv[])和main(int argc, char **argv)有什么分别?
- 请问: int _tmain(int argc, char* argv[]) 和 main(int argc, char* argv[])有什么区别。
- HP Unix下的cc 不支持void main(int argc,char** argv)
- 怎么在调试状态给main(int argc, char **argv)传参数




