4

这是一个“奇怪”的问题,因为它让我感到困惑。我一直在学习 C,我意识到我的 C 书中没有一个问题。

当启动一个函数时,比如int main()or void name(),我怎么知道在括号里放什么……比如int main(int argc, char *argv[])or int main()

这是一个愚蠢的问题,但我不知道在编程时何时使用什么。在线链接资源会有所帮助。

谢谢,对愚蠢感到抱歉。

4

3 回答 3

5

您传递给函数的变量是它的输入或(有时)它的输出。例如,如果您想编写一个将两个整数相加并返回其和的函数,您可以定义

int sum(int m, int n) {
  return m + n;
}

main()函数是一种特殊情况,因为它对提供给程序的命令行参数进行操作。在大多数语言中,main()采用一个字符串数组,每个字符串中有一个来自命令行的单词。在 C 中,它还接受一个整数,表示在命令行中输入的单词数。

于 2012-05-14T23:02:44.550 回答
4

在您关于 的具体问题main()中,当您想要引用传入的命令行参数时,您将需要括号内的参数。您可能会对声明函数的不同方式感到困惑。作为初级 C 程序员,您应该始终int func(int a, int b)在同一行声明返回类型、函数名称、参数和参数类型。不要让其他语法让您感到困惑——大多数是出于历史原因而存在的,当您知道足以回答知道它们为什么存在时,您就会知道足以自己回答这个问题:)

于 2012-05-14T23:02:26.657 回答
1

即使正确的签名是main(int argc, char *argv[]),也很常见int main()。这是有效的,因为C 在检查外部函数的签名方面并不是特别严格(不可能;当你在 C 中调用外部函数时,你只是给出了一个指向函数的指针和一个参数列表;没有办法它可以真正检查您是否按照最初定义的方式使用该功能。)

所以这也可以:

int main(int argc) { return 0; }

即使这样也会:

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

只是不要期望任何有意义的值会出现在foo.

于 2012-05-15T00:12:22.743 回答