如果我们可以声明多个这样的变量:
int i, j, k;
那么为什么我在写正式参数时会出错:
void fun(int i, j, k)
而不是:
void fun(int i, int j, int k)
答案 0 :(得分:15)
因为这不是C语法的工作原理。参数声明在几个方面与变量声明不同,例如
void fun(int i, double x);
VS
int i, double x; // syntax error
虽然语法可以扩展为允许您尝试的表单(例如Go允许使用func fun(i, j, k int)
,但标准委员会决定不这样做,大概是因为它会让人感到困惑。面向旧式(“K& R”,1989年之前)的参数语法,为了向后兼容性,ANSI C89 / ISO C90仍然支持这种语法。
void fun(i, j) // K&R syntax: implicitly int i, int j
{
}
void fun(i, p)
int *p; // int i implicit!
{
}
// What's this? double i? double *i? Mixed K&R/ANSI syntax with implicit int i?
void fun(double *x, i)
{
}