main( int argc ,char*argv[ ] ) {int n,i=0 ; while(argv[ 1 ][
main( int argc ,char*argv[ ] ) {int n,i=0 ; while(argv[ 1 ][ i ='\0' ) {n=fun();i++;}main( int argc ,char*argv[ ] ){int n,i=0 ;while(argv[ 1 ][ i ='\0' ){n=fun();i++;}printf(%d\n",n*arge);}int fun(){static int s=0;s+=1;return s;}假设程序经编译连接生成可执行文件exam.exe,若输入exam 123 ,结果为6,为什么?
最佳回答
printf(%d\n",n*arge);中的arge是argc吗?如果是的话,结果应该是6,输入exam 123后,参数argc = 2,argv[1] = "123"。因为字符串“123”长度为3,所以argc * n 等于2 * 3 等于6。若exam后没有参数,则argc = 1,argv[0] = main; 再问: 参数argc = 2,argv[1] = "123"。 这一步是为什么?还有最后S是怎么运算出的? 再答: argc和argv是由系统传递的,argc始终大于或等于1,当exam后无有参数时,argc等于1,有n个参数,argc为n+1,第一个字符串的地址存在argv[1],第二个字符串的地址存在argv[2],依此累推。 s你定义为static静态变量,具有连续性,所以执行一次fun()时,s就累加1,总共执行了3次,所以while循环退出时,s的值为3,n的值也为3 一时大意,之前的回答中argv[0] = main;是错的,应该是argv[0] 指向程序运行的全路径名
最新回答共有2条回答
-
2026-04-02 17:47:48清秀的黑米
回复printf(%d\n",n*arge);中的arge是argc吗?如果是的话,结果应该是6,输入exam 123后,参数argc = 2,argv[1] = "123"。因为字符串“123”长度为3,所以argc * n 等于2 * 3 等于6。若exam后没有参数,则argc = 1,argv[0] = main; 再问: 参数argc = 2,argv[1] = "123"。 这一步是为什么?还有最后S是怎么运算出的? 再答: argc和argv是由系统传递的,argc始终大于或等于1,当exam后无有参数时,argc等于1,有n个参数,argc为n+1,第一个字符串的地址存在argv[1],第二个字符串的地址存在argv[2],依此累推。 s你定义为static静态变量,具有连续性,所以执行一次fun()时,s就累加1,总共执行了3次,所以while循环退出时,s的值为3,n的值也为3 一时大意,之前的回答中argv[0] = main;是错的,应该是argv[0] 指向程序运行的全路径名
热门文章
- 康达学院专转本五年制
- 高考一个考场分ab卷吗
- not only but also用法
- 某物体做自由落体运动,从释放开始计时,则物体在前2s内的平均速度为______m/s,物体下落2m时的速度大小为______m/s.
- 三角函数公式大全表格
- 地理中考必背知识点2022
- 2013-2014学年小学六年级科学上学期期末考试试卷及答案
- 人教版2014-2015学年小学五年级英语第二学期期中教学质量检测试卷及答案
- 【Linux驱动开发】设备树详解(二)设备树语法详解
- 别跟客户扯细节
- 在别的城市买房子能落户吗
- 卖房前要把装修贷还完吗
- 高中政治教学提高教学效果的方法探究
- “互联网+”背景下的初中英语课堂教学改革与创新策略研究
- 2022年终止合同范本
- 租房合同范本范文
- 如何挑选土豆
- 如何挑选土鸡
![main( int argc ,char*argv[ ] ) {int n,i=0 ; while(argv[ 1 ][_知道](http://www.mshxw.com/skin/sinaskin/know/picture/logo.png)