我从名为“学习C艰难的方式”的书中找到了这段代码,但我无法理解其中的含义和目的:
for(i=0;argv[1][i]!='\0';i++){
char letter=argv[1][i];
答案 0 :(得分:3)
主要根据C标准的参数声明为
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]!='\0';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] != '\0'; j++ ) putchar( argv[i][j] );
printf( "\n" );
}
return 0;
}
答案 1 :(得分:0)
argv[1]
是字符串数组argv
中的第二个字符串,字符串是字符数组,因此argv[1][0]
是第二个字符串中的第一个字符,{ {1}}是第二个字符串中的第二个字符,依此类推。
答案 2 :(得分:-1)
对于传递给程序的参数中的每个字母,它创建一个名为letter的变量,该变量具有该值 我认为它用于for循环的以下行。