为什么我们使用“const char* const* argv”而不是“char *”?

ali*_*ebi 5 c++ ns2 argv

我正在使用“NS2 Simulator”模拟计算机网络。我真的不明白为什么我们应该const char* const* argv使用char *?

我可以用char *它代替吗?关于这个主题有很多质量保证,但我对此感到困惑。请不要将此问题标记为“重复”。const char* const* argv为什么我们在下面的函数中使用?这是c++标准中的规则吗?我可以使用其中一个stringchar **代替它吗?

  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));
  }
Run Code Online (Sandbox Code Playgroud)

278*_*528 0

为什么我们应该使用“const ... argv”而不是“char *”?

“const”来自程序员,命令编译器在您编写的代码尝试修改 argv 时通知您。

我可以用 char * 代替吗?

有可能,有时并不重要。但是如果你错误地修改了argv(或者无论const var名称是什么),那么编译器不会让你知道你犯了一个错误,结果可能是你不想要的,甚至是UB。