【问题标题】:C++ int main (int argc, char *argv[]) - is argv a c style array?C++ int main (int argc, char *argv[]) - argv 是 c 风格的数组吗?
【发布时间】:2014-01-10 19:16:35
【问题描述】:

以下内容无法编译:

int main (int argc, char *argv[]) {
    char arr[2][2];
    char **ptr = arr;
    return 0;
}

但以下是:

int main (int argc, char *argv[]) {
    char **ptr = argv;
    return 0;
}

因此,我会得出结论,argv 不是存储为单个内存块的 c 样式数组,而是某种指针数组。有人可以确认吗?

谢谢你和问候。

【问题讨论】:

  • 如果argv 是一个数组数组,那么内部数组的大小将是类型的一部分(并且它们都必须是相同的大小)。
  • arr 衰减为指向char (*)[2] 类型数组的指针,这与指向char** 类型指针的指针不同。

标签: c++ arrays main


【解决方案1】:

没错,argv 是指向指针数组的第一个元素的指针,每个指针(最后一个除外)又是指向给出相应命令的字符串中的第一个字符的指针行参数。

函数参数不能是数组。

【讨论】:

  • 我删除了关于没有数组类型参数这样的东西的答案,因为即使这是一个东西,由于数组到指针的转换,它仍然可以工作。主要问题是内部类型是数组,而不是指针。
猜你喜欢
  • 2020-11-03
  • 2011-07-08
  • 2014-10-09
  • 2018-02-21
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
相关资源
最近更新 更多