您能帮我理解以下代码:

时间:2019-12-18 19:34:47

标签: c loops if-statement arguments

是* argv [1]一种遍历数组所有元素的方式

#include <unistd.h>

int     main(char **argv)
{

    while (*argv[1])
    {
        if (*argv[1] == 'a')
        {
            write(1, "a", 1);
            break;
        }
        argv[1]++;
    }
}

关于argv [1] ++的事:是在地址中添加一个吗?

1 个答案:

答案 0 :(得分:0)

假设您的意思是标准:

int main(int argc, char **argv)

argv[1]是指向程序的第一个命令行参数的指针。那么*argv[1]是参数的第一个字符,与argv[1][0]相同。

递增argv[1]使其指向该参数的下一个字符。

while (*argv[1])测试到达字符串的空终止符时将失败。

因此,此代码循环遍历第一个参数中的字符,并在参数中找到a字符时打印a。如果您运行:

./a.out aardvark

它将打印

aaa