【问题标题】:Inconsistent argv declarations in main() [duplicate]main() 中的 argv 声明不一致 [重复]
【发布时间】:2016-05-24 11:35:26
【问题描述】:

我是 C 编程新手。我对以下之间的区别感到很困惑:

int main (int argc, char **argv)

int main (int argc, char *argv[])

它们在 C 编程中是否相同?

【问题讨论】:

  • 那个线程不是重复的,它只关心main的格式,而不关心char**char* []之间的区别,这实际上是这个问题的意思。我会重新打开这个。
  • @MohitJain 这似乎是一个可能的重复。但是,该线程是一些旧线程,其措辞是提供主观和基于意见的答案(它有许多真正糟糕的答案),所以我不确定它是否适合使用。
  • @Lundin 是的,但问题的意图是相同的。那里的答案基本上适用/适合这个问题。
  • @MohitJain 这样一个蹩脚的线程......即使是最佳答案也有点糟糕,因为他拖了各种不相关的东西,比如函数指针,答案应该只是一个最多几段。
  • @Lundin 嗯。在这种情况下,我们至少需要一个问题的好答案,第二个问题应该被标记为重复。要么在那里编辑和更新现有答案,要么将旧答案标记为重复,或者在此处添加一些更新的答案。我觉得前者是一个好(更简单)的主意。但根据您在 SO 社区的经验,您可能会做出更好的决定。

标签: c


【解决方案1】:

是的,当作为函数参数列表的一部分时,它们是相同的。

具体是char* argv[]实际上声明了一个未知大小的数组,其中数组中的每一项都是一个指针。但是,只要数组声明作为函数参数列表的一部分出现,它就会被指向第一个元素的指针默默地替换。

char* 的 arrar 的第一个元素当然是 char* 类型,因此指向第一个元素的指针将是 char** 类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 2014-04-23
    • 2011-07-08
    • 2014-10-09
    • 2019-02-26
    • 2014-10-26
    • 2019-06-18
    • 2011-04-23
    相关资源
    最近更新 更多