如果我们可以像这样声明多个变量:
int i, j, k;
那么为什么我在写正式参数时会出错:
void fun(int i, j, k)
代替:
void fun(int i, int j, int k)
如果我们可以像这样声明多个变量:
int i, j, k;
那么为什么我在写正式参数时会出错:
void fun(int i, j, k)
代替:
void fun(int i, int j, int k)
因为这不是 C 语法的工作方式。参数声明在几个方面不同于变量声明,例如
void fun(int i, double x);
对比
int i, double x; // syntax error
虽然可以扩展语法以允许您尝试使用的形式(例如,Go with its 允许的形式func fun(i, j, k int)
,但标准委员会决定不这样做,大概是因为面对旧式(“K&R ", pre-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)
{
}