这是一个相当简单的问题,但我不能放过它。我最近又开始和C一起工作(开始时并没有非常有经验)所以我可以更好地理解幕后发生了什么。我当然知道argc和argv,当传递给main()时,分别代表参数count和参数vector。我想弄清楚的是编译器如何知道将int argc解释为从命令行传递的参数数量。如果我编写一个试图模仿main的简单函数(即int testfunc(int argc,char * argv []))并传入一个字符串,编译器会抱怨“Expected'int'但参数类型为char *”正如我所料。当命令行参数传递给main()?
时,这有何不同的解释答案 0 :(得分:2)
您不会自己传递argc
值(例如,从命令行传递),它由您的环境(运行时)提供,就像完全内容一样argc
。 [请注意以下]
详细说明,C11
,章节§5.1.2.2.1,(指标我的)
argc
的值应为非负值。
argv[argc]
应为空指针。如果
argc
的值大于零,则数组成员argv[0]
通过argv[argc-1]
包含应包含指向字符串的指针 程序启动前主机环境实现定义的值。该 意图是在程序启动之前为程序提供信息 来自托管环境中的其他地方。 [Note start] 如果主机环境不具备 为字符串提供大写和小写的字母,实现 应确保字符串以小写形式收到。 [注意结束]