gpt4 book ai didi

c - 当传递给没有参数声明的函数时,参数去哪里

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:50 25 4
gpt4 key购买 nike

代码:

foo()
{
}
int main()
{
int a=20;
a = foo(20);
printf("\n\n\t A : %d",a); // will print zero.
}

问题:

  1. 您可能会注意到 foo() 没有返回类型。它是被视为'int',为什么?为什么这个“隐式整数”规则?为什么C 语言的设计者如此热爱“int”?

  2. foo() 没有参数声明,它说它可以接受可变数量的参数。那么传递的参数去哪儿了?例如foo(20) 20 去哪儿了?

  3. 在上面的例子中 printf 打印出零,为什么?


现在,考虑:

foo()
{
}
int main()
{
int a=20;
a = foo(a);
printf("\n\n\t A : %d",a); // It'll print 20.
}
  • 现在 printf 打印 20 为什么不像之前那样打印 0?

最佳答案

  1. 据我了解,这是来自原始 C 规范的历史事件。规范中仍然规定,如果您不声明返回类型,则返回类型为 int。这并不意味着您应该利用它。这是我书中的糟糕风格。

  2. 阅读:Is it better to use C void arguments "void foo(void)" or not "void foo()"?

  3. 您观察到的是未定义的行为,即当您对不返回任何内容的函数使用返回值时得到的结果。

关于c - 当传递给没有参数声明的函数时,参数去哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com