main( int argc ,char*argv[ ] ) {int n,i=0 ; while(argv[ 1 ][

学习 时间:2026-04-02 17:47:48 阅读:948
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,为什么?

最佳回答

痴情的溪流

飘逸的大树

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] 指向程序运行的全路径名

最新回答共有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] 指向程序运行的全路径名

上一篇 way of doing something among a group of people 翻译

下一篇 run out of 的意思