为什么用这种方式声明函数参数:void func(x)int x; {}

时间:2019-06-16 09:04:11

标签: c function parameters definition putchar

我在看putchar.c时偶然发现了这些行

我想知道为什么将参数ptrc声明在参数主体之外? 这是某种“旧方法”还是有实际用途?

int
_putchar_r (ptr, c)
     struct _reent *ptr;
     int c;
{
  return __sputc (c, _stdout_r (ptr));
}

3 个答案:

答案 0 :(得分:0)

实际上,这是声明函数参数的“古老”方法。

我有点喜欢它,因为它一直在提醒我们,所有函数的参数都是局部变量,仅存在于函数范围内,并且传递给任何函数的任何参数始终是值副本。

答案 1 :(得分:0)

它是经典C Programming Book中引入的K&R C风格

答案 2 :(得分:0)

它是带有标识符列表的函数定义。标识符列表中的每个标识符都在函数的复合语句之前声明。

因此,可以使用参数类型列表或使用带有标识符列表的旧样式来定义函数。