繁体   English   中英

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

[英]Where does the argument go when passed to a function having no declaration for parameters

代码 :

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. 阅读:使用 C 空参数“void foo(void)”或不使用“void foo()”更好吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM