CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

main(int argc,char*argv[])

楼主tudoushishei(土豆)2006-02-06 11:37:11 在 C/C++ / C语言 提问

为什么一下程序输出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)传参数

关键词

  • 函数
  • 指针
  • argv
  • mornig
  • argc
  • 参数
  • myv
  • myc
  • 程序
  • 调用

得分解答快速导航

  • 帖主:tudoushishei
  • pagechen
  • popy007
  • dragonatneight
  • huanmm
  • Tiwen818

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo