我对以下构造函数的参数有疑问:
// Codesnippet 1
Foam::argList::argList
372 (
373 int& argc,
374 char**& argv,
375 bool checkArgs,
376 bool checkOpts
377 )
.
.
.
&
是什么意思?
char**&
是什么意思?实际上我有代码
//codesnippet 2
Foam::argList args(argc, argv);
其中argv是主方法
的命令行参数的地址 // Codesnippet 3
int main(int argc, char *argv[])
因此我不明白为什么在codesnippet 1中传递的参数被描述为char**&
。
答案 0 :(得分:1)
char**&
应该从右到左阅读。在此上下文中,&
表示参考。 *
表示指针。所以这应该被理解为对指向char 的指针的引用。字符串是字符数组,在C和某些C ++代码中,键入为char*
。因此,您可以简化上述内容,以便char**&
是对字符串指针的引用。如果递增该指针,您将获得字符串数组中的下一个字符串,该数组包含argc
项。
char *argv[]
是指向char 的指针数组。这是说它是一个字符串数组的另一种方式,尽管[]
的使用使得它更加清晰,它实际上是一个数组。
因此,您可以隐式地从char *argv[]
投射到char** argv
。它们在实践中是一样的。
至于参考文献(&
),值得在其他地方阅读适当的教程。