我的教授在课堂上举了这个例子。它基本上是Unixmore命令的一个版本,我不确定其中有几点

int main( int ac , char *av[] )
{
  FILE  *fp;

  if ( ac == 1 )
    do_more( stdin );
  else
    while ( --ac )
     if ( (fp = fopen( *++av , "r" )) != NULL )
     {
        do_more( fp ) ;
        fclose( fp );
     }
     else
        exit(1);
return 0;
}

我知道*fp定义了一个文件指针,*av[]是命令行参数数组。但就操作而言,*++av意味着什么?

最佳答案

像这样读*++av:

++av // increment the pointer
*av // get the value at the pointer, which will be a char*

在本例中,它将打开在命令行上传递的每个文件。
也:
av[0] // program name
av[1] // parameter 1
av[2] // parameter 2
av[3] // parameter 3
av[ac - 1] // last parameter

关于c - 无法理解命令行参数指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4921702/

10-11 16:35