知道如何在正确的时间定义功能

时间:2012-05-14 22:58:13

标签: c function parameters

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

启动某个功能时,如int main()void name(),我如何知道括号中的内容......例如int main(int argc, char *argv[])int main()

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

谢谢,抱歉愚蠢。

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分: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中显示任何有意义的值。