"argument lists" 在 K&R 中是什么意思?

What does the term "argument lists" mean in K&R?

我只是被书中的一句话弄糊涂了。该行是:

"because external variables are globally accessible, they can be used instead of argument lists to communicate data between functions" .

我无法获取术语参数列表。这是什么??

参数列表”是函数采用的参数列表。它的意思是代替:

int function( int arg )
{
    return arg * arg ;
}

int main( void )
{
    function( 10 ) ;
}

你可以这样做:

int arg ;

int function( void )
{
    return arg * arg ;
}

int main( void )
{
    arg = 10 ;
    function() ;
}

你为什么要这样做?你不会的!这是一个非常糟糕的主意 - 忽略它,假装你从未读过它。

全球数据可以而且应该在任何地方都避免和消除。它有许多有据可查的问题;在这种情况下,它呈现函数不可重入,因此它会在递归和多线程应用程序中失败。

K&R 第 2 版(我真的希望我们不是在谈论第 1 版!)是对 C89 编程语言的描述,而不是编程风格或 最佳实践 指南.无论如何,自从引入 ANSI-C 以来,事情已经发生了变化,K&R 不再是该语言的真正推荐参考。但即使在当时,这也是一个糟糕的建议。