假定下列程序的可执行文件名为filel.exe,在该程序的子目录下输入命令行:
file1China Bejing<回车>
main(int argc,char*argv[])
while(argc-->1)
printf("%s\n",*++argv);
则程序运行后的输出结果是( )。
A.filel China Bejing
B.China Bejing
C.China
D.Bejing
参考答案:B
解析: 主函数的第一个参数argc为整形参数,记下从命令行输入的参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个指针指向命令行输入的参数字符数。在本例中argc的值为3,argv[0]指向字符串.“filel”,argv[l]指向参数字符串“China”, argv[2]指向字符串“Bejing”。
在main()函数中,while循环执行了2次。第1次循环,argc=3,3>1为真,argc-1=3-1=2,执行循环体输出*++argv,argv为字符型的指针数组的数组名,代表数组的首地址,同时也是数组第1个元素的地址,++argv指向数组的第2个元素,第2个元素是一个指针,它指向字符串“China”。第2次循环,argc=2,2>1为真,argc-1=2-1=1,执行循环体输出*++argv,这次循环畔++argv指向数组的第3个元素,第3个元素是一个指针,它指向字符串“Bejing”。argc=1时,1>1为假,退出循环。所以,4个选项中选项B符合题意。