这段代码的含义:for(i=0;argv[1][i]!='\0';i++)

meaning of this code :for(i=0;argv[1][i]!='\0';i++)

我从名为 "Learn C the hard way" 的书中找到了这段代码,但我无法理解其含义和用途:

for(i=0;argv[1][i]!='[=10=]';i++){
    char letter=argv[1][i];

对于传递给程序的参数中的每个字母,它都会创建一个具有该值的名为 letter 的变量。
我认为它用于for循环的以下行。

argv[1]是字符串数组argv中的第二个字符串,而字符串是字符数组所以argv[1][0]第二个字符串中的第一个字符argv[1][1]第二个字符串中的第二个字符,依此类推。

根据 C 标准声明带有参数的 main 像

int main( int argc, char * argv[] )

相当于

int main( int argc, char ** argv )

argv指向指向字符串第一个字符的指针数组的第一个元素。

因此argv[1]是指向第二个参数第一个字符的指针(第一个参数是程序名)。例如 *argv[1]argv[1][0] 是零终止字符串的第一个字符。

例如,如果您的程序 运行 喜欢

your_program Hello

然后命令行参数像字符串"Hello"一样传递给程序。这个循环

for(i=0;argv[1][i]!='[=13=]';i++){
    char letter=argv[1][i];

遍历字符串直到遇到终止零。

您可以通过以下方式逐字符输出所有参数

#include <stdio.h>

int main( int argc, char * argv[] ) 
{
    for ( int i = 0; i < argc; i++ )
    {
        for ( int j = 0; argv[i][j] != '[=14=]'; j++ ) putchar( argv[i][j] );
        printf( "\n" );
    }

    return 0;
}