【发布时间】:2016-07-05 03:24:09
【问题描述】:
我正在使用“NS2 Simulator”模拟计算机网络。我真的不明白为什么我们应该使用const char* const* argv 而不是char *?
我可以用char * 代替那个吗?关于这个主题有很多质量保证,但我对此感到困惑。请不要将此问题标记为“重复”。
为什么我们在下面的函数中使用const char* const* argv?这是 c++ 标准中的规则吗?我可以使用string 或char ** 来代替吗?
Function Connector::command.
//~ns/common/connector.cc
int Connector::command(int argc, const char*const* argv)
{
Tcl& tcl = Tcl::instance();
...
if (argc == 3) {
if (strcmp(argv[1], "target") == 0) {
...
target_ = (NsObject*)TclObject::lookup(argv[2]);
...
}
...
}
return (NsObject::command(argc, argv));
}
【问题讨论】:
-
假设
argv是main的典型参数,那么它应该是char**,而不是char*而不是const char* const*。 -
如果你想了解
const char* const* argv的这个“怪物”是什么意思,我强烈建议你阅读this。如上所述,标准 C 要求main的第二个参数为char**类型。 -
@Cornstalks 或
char* argv[]也可以,只是为了 OP 的利益而发布此内容。 -
@JamesAdkison 但这只是
char**的语法糖,不是吗? -
@vsoftco 是的。我只是指出可能遇到的其他语法。