【问题标题】:What does the "main()" that is put in the beginning of programs in C mean?放在 C 程序开头的“main()”是什么意思?
【发布时间】:2019-07-10 23:24:09
【问题描述】:

我只是想彻底了解基础知识以及一些简单的代码所指的。

我能够在以下位置找到简短说明 https://www.dummies.com/programming/c/looking-at-the-c-language/ 但我不认为我完全理解它的帮助。

【问题讨论】:

  • 它是你的程序的起点——操作系统知道开始执行你的代码。
  • 有什么理由说它是“主要”而不是“开始”或“开始”之类的东西,我猜没有?
  • @scriptkiddie 因为crt0 调用main 请参阅:embecosm.com/appnotes/ean9/html/ch05s02.html
  • 为什么叫main看看这个stackoverflow.com/questions/1688338/…
  • main 是您编写的第一个执行的函数 - 它不是第一个执行的函数,因为在您的程序启动之前运行了一些代码,例如。读取命令行并将其放入 argv 数组中。

标签: c


【解决方案1】:

这是您的程序的起点。 Per 5.1.2.2.1 Program startup of the C standard:

程序启动时调用的函数名为main。这 实现没有声明这个函数的原型。应该是 使用int 的返回类型定义并且没有参数:

     int main(void) { /* ... */ }

或带有两个参数(此处称为argcargv,尽管任何 可以使用名称,因为它们对于它们所在的函数是本地的 声明):

     int main(int argc, char *argv[]) { /* ... */ }

或等价物;或以其他一些实现定义的方式。

如果它们被声明,主函数的参数应该服从 以下约束:

  • argc 的值应为非负数。
  • argv[argc] 应为空指针。
  • 如果argc 的值大于零,则数组成员argv[0]argv[argc-1] 应包含指向 字符串,由主机给出实现定义的值 程序启动前的环境。目的是提供给 在程序启动之前从其他地方确定的程序信息 在托管环境中。如果宿主环境不能 提供带有大写和小写字母的字符串, 实施应确保字符串以 小写。
  • 如果argc的值大于零,则argv[0]指向的字符串代表程序名; argv[0][0] 应为 如果程序名称不能从主机获得,则为空字符 环境。如果argc 的值大于一,则字符串 argv[1]argv[argc-1] 指向的代表程序 参数。
  • 参数argcargv以及argv数组所指向的字符串可以被程序修改,并保留它们的 程序启动和程序终止之间的最后存储值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    相关资源
    最近更新 更多