我经常发现自己对“参数”和“参数”这两个术语的用法感到困惑。在编程世界中,它们似乎可以互换使用。
他们使用的正确惯例是什么?
参数是由函数定义为输入的东西,实参是作为参数传递的东西。
void foo(int bar) { ... } foo(baz);
在此示例中,__abc0是__abc1的参数。__abc2是传递给__abc1的自变量。
参数是你在调用子例程时所拥有的。参数是您在子例程中访问的内容。
argle(foo, bar);
foo和bar是自变量。
foo
bar
public static void main(final String[] args) { args.length; }
args是一个参数。
args
尽管维基百科算不上权威来源,但它在解释术语方面做得还不错。
我想你可以说参数之于参数,就像类之于对象的实例……
__abc0是函数声明中的变量:
functionName(parameter) { // do something }
__abc0是传递给函数的变量的实际值:
functionName(argument);
在__关于这个主题的维基百科文章中有一个很好的部分。
简而言之,参数是函数定义的正式名称,论证是传递给函数的实际值(如5)或事物(如变量)。
对于用户1515422,一个非常具体的例子显示了参数和参数之间的区别:
考虑此函数:
int divide(int numerator, int denominator) { return numerator/denominator; }
它有两个参数:numerator和denominator,在定义时设置。一旦定义,函数的参数就是固定的,不会改变。
numerator
denominator
现在考虑该函数的调用:
int result = divide(8, 4);
在这种情况下,8和4是传递给函数的论据。__abc2参数被设置为自变量__abc0的值,并且__abc4被设置为__abc1。然后,在将参数设置为自变量的值的情况下对函数求值。您可以将该过程视为等效于:
8
4
int divide() { int numerator = 8; int denominator = 4; return numerator/denominator; }
形参与实参之间的差异类似于变量与其值之间的差异。如果我写int x = 5;,变量x,值5。可能会产生混淆,因为很自然地会说“ X是5 ”,作为“变量X的值为5 ”的简写,但希望区别是明确的。
int x = 5;
x
5
这能澄清一些事情吗?
简单地说,没有什么大的区别。如果我们深入研究这一点,我们可以识别差异。主要是我们知道参数/参数/签名都是相同的。
基本上,参数定义了我们要传递的数据类型,而论据定义了我们要传递的实际数据/变量。
参数示例:-
int add(int a,int b){ //Here a and be both can treated as Parameter return a+b; }
int return_result=add(3,4); // Here 3 and 4 both can treated as Argument or int x=3,y=4; int return_result=add(x,y);// Here x and y both can treated as Argument
在大多数情况下,过程需要一些有关调用它的环境的信息。执行重复或共享任务的过程对每个调用使用不同的信息。此信息由调用过程时传递给过程的变量、常量和表达式组成。
为了将此信息传递给过程,过程定义一个参数,并且调用代码将一个参数传递给该参数。你可以把参数想象成一个停车场,把参数想象成一辆汽车。正如不同的汽车可以在不同的时间停放在停车场一样,调用代码可以在每次调用过程时将不同的参数传递给相同的参数。
参数
参数表示过程期望您在调用它时传递的值。过程的声明定义了它的参数。
定义功能或子程序时,请在紧随过程名称的括号中指定参数列表。对于每个参数,请指定名称、数据类型和传递机制(ByVal或ByRef)。您还可以指示参数是可选的,这意味着调用代码不必为其传递值。
每个参数的名称都用作过程中的局部变量。使用参数名称的方式与使用任何其他变量的方式相同。
论据
实参表示调用过程时传递给过程形参的值。调用代码在调用过程时提供参数。
调用功能或子程序时,应在紧随过程名称的括号中包括一个参数列表。每个实参对应于列表中相同位置的形参。
与形参定义相反,实参没有名称。每个参数都是一个表达式,可以包含零个或多个变量、常量和文字。计算表达式的数据类型通常应与为相应参数定义的数据类型匹配,并且在任何情况下都必须可转换为参数类型。
实际上,参数和实参是不同类型的参数。那些是
1)形式参数-变量出现在函数/子程序定义中
对于例如(在Java中)
public void foo(Integer integer, String... s2)
这里,INTEGER和S2都是形式参数或不严格地说是参数。
2)实际参数或实参-调用时变量出现在子例程中 已定义子程序
2)实际参数或实参-调用时变量出现在子例程中
已定义子程序
对于例如(在Java中) 假设如果函数“ foo ”驻留在对象中";测试对象";,
testObject.foo(new Integer(1), "test")
因此,函数定义中的变量被称为形式参数或简单的参数和变量,而调用方法被称为实际参数或参数。希望能有所帮助。
把它想象成基础代数。X是你必须填写的参数,你放在里面的数字就是自变量。所以如果你有一个像X+2这样的方程,X是你的参数,你为X改变的任何数字都被称为自变量。所以如果你用这个方程来补充X的1,你会得到1+2。这意味着1是一个参数,提供给X的参数。
同样,如果您有一个像doSomething(“ this ”)这样的函数,它的定义将是doSomething(String parameterName),但“ this ”将是提供给参数的实际参数,此处命名为parameterName.
从最简单的角度来看,参数是参数填充的内容,而参数可以是该参数允许的任何数量的内容。
所以这是参数和自变量之间的多对一关系,因为你可以有一个参数,它可以有许多有效的自变量,就像我们上面的X+1方程。X可以是任何已知的数字,并且它们都是有效的。
当您定义如下函数时:
MyFunction(param1,param2) { print parameter1, parameter }
设置参数。 当你像这样调用函数时:
MyFunction('argument1', 'argument2');
将参数的值设置为传递的参数。当你调用它时,参数是你在问题中输入的内容。希望这对你有帮助。
变量是存储位置和相关的符号名称(标识符),其中包含数据和值。
参数是传递给函数的变量。
参数是传递给函数的数据(值)。
$variable = 'data/value'; function first($variable){ ... } function second('data/value'){ ... } function third(16){ ... }
在Function First中,我们传递了一个参数。
在第二个和第三个函数中,我们传递参数。