"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 不再是该语言的真正推荐参考。但即使在当时,这也是一个糟糕的建议。
我只是被书中的一句话弄糊涂了。该行是:
"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 不再是该语言的真正推荐参考。但即使在当时,这也是一个糟糕的建议。