A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangenhao 中级黑马   /  2014-4-26 01:29  /  1535 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jiangenhao 于 2014-4-26 22:29 编辑

设有一个名为file的C源程序,且已知命令行为:file  girl  boy  student,则可得到以下运行结果的C源程序为()。
    girl
    boy
    student
    A. main( int argc, char *argv[])
    {  
        while (--argc>1)
            printf("%s%c", *argv, (argc>1)? '\n':' ');
    }
    B. main( int a, char * b[])
    {
        while (a-->1)
            printf("%s\n", *++b);
    }
    C. main( int argc, char *argv[])
    {  
        while (++argc>0)
            printf("%s%c", *++argv, (argc>1) ? ' ' :'\n');
    }
    D. main(int argc, char *argv[])
    {
        while (argc>1)
            printf("%s", *++argv);
    }

答案是B 请帮忙解释下为什么

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
gaoxinglei123 来自手机 中级黑马 2014-4-26 07:37:16
沙发
b的意思就是,当a>1;打印出*(b+1);然后a++;b++;b是一个指针数组里面元素分别指向命令行各个参数的首地址。第一个参数为file名所以跳过。*(b+i)就是*b[i];指向命令行第i个字符串
回复 使用道具 举报
谢谢马凯文 讲的太透彻了 谢了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马