#include <stdio.h>main(int argc,char *argv[]){ int i ,len=0;for(i=1;i<argc;i+=2) len+=strlen(argv[i]); printf("%5d\n",len);}生成文件ex.exe输入命令 ex abcd efg h3 k44求输出结果帮分析下argv[0]不是应该是ex ,答案是8,我也感觉i=5是已经跳出循环
分析如下:argc是所有参数的个数,包括可执行文件名所以输入命令:ex abcd efg h3 k44argc的值是 5至于 *argv[]也可以写成**argv或者argv[][],是个二级指针。或者是指向二维数组的行的指针!故argv[i]是指向第i个参数对应的字符串的第一个字符的地址,指向分别如下:argv[0] -> exargv[1] -> abcdargv[2] -> efgargv[3] -> h3argv[4] -> k44所以对于for循环语句,i = 1时,len = 0 + strlen(argv[1]) = 0 + strlen("abcd") = 0 + 4 = 4接着,i += 2 ==> i = 1 + 2 = 3然后,len = len + strlen(argv[3]) = 4 + strlen("h3") = 4 + 2 = 6再来,i += 2 ==> i = 3 + 2 = 5此时,由于argc = 5,故i不满足 i < argc 这个条件,跳出for循环。最后 printf("%5d\n",len);打印len的值,故结果是 6 。由于是以%5d输出,所以6前有4个空格。