关于argc(不知道这是什么意思)

时间:2017-11-28 15:27:54

标签: c++ c

这是一个相当简单的问题,但我不能放过它。我最近又开始和C一起工作(开始时并没有非常有经验)所以我可以更好地理解幕后发生了什么。我当然知道argc和argv,当传递给main()时,分别代表参数count和参数vector。我想弄清楚的是编译器如何知道将int argc解释为从命令行传递的参数数量。如果我编写一个试图模仿main的简单函数(即int testfunc(int argc,char * argv []))并传入一个字符串,编译器会抱怨“Expected'int'但参数类型为char *”正如我所料。当命令行参数传递给main()?

时,这有何不同的解释

1 个答案:

答案 0 :(得分:2)

您不会自己传递argc值(例如,从命令行传递),它由您的环境(运行时)提供,就像完全内容一样argc [请注意以下]

详细说明,C11,章节§5.1.2.2.1,(指标我的

  
      
  • argc的值应为非负值。

  •   
  • argv[argc]应为空指针。

  •   
  • 如果argc的值大于零,则数组成员argv[0]通过   argv[argc-1]包含应包含指向字符串的指针   程序启动前主机环境实现定义的值。该   意图是在程序启动之前为程序提供信息   来自托管环境中的其他地方。 [Note start] 如果主机环境不具备   为字符串提供大写和小写的字母,实现   应确保字符串以小写形式收到。 [注意结束]

  •