方法参数

时间:2013-11-24 17:33:41

标签: c++ methods parameters

我对以下构造函数的参数有疑问:

// Codesnippet 1
Foam::argList::argList
372 (
373  int& argc,
374  char**& argv,
375  bool checkArgs,
376  bool checkOpts
377 )
.
.
.
  1. &是什么意思?

  2. char**&是什么意思?实际上我有代码

    //codesnippet 2
    Foam::argList args(argc, argv);
    
  3. 其中argv是主方法

    的命令行参数的地址
      // Codesnippet 3
      int main(int argc, char *argv[])
    

    因此我不明白为什么在codesnippet 1中传递的参数被描述为char**&

1 个答案:

答案 0 :(得分:1)

char**&应该从右到左阅读。在此上下文中,&表示参考。 *表示指针。所以这应该被理解为对指向char 的指针的引用。字符串是字符数组,在C和某些C ++代码中,键入为char*。因此,您可以简化上述内容,以便char**&是对字符串指针的引用。如果递增该指针,您将获得字符串数组中的下一个字符串,该数组包含argc项。

char *argv[]是指向char 指针数组。这是说它是一个字符串数组的另一种方式,尽管[]的使用使得它更加清晰,它实际上是一个数组。

因此,您可以隐式地从char *argv[]投射到char** argv。它们在实践中是一样的。

至于参考文献(&),值得在其他地方阅读适当的教程。