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,为什么?
参数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] 指向程序运行的全路径名