参数或参数?

时间:2009-01-09 10:42:27

标签: language-agnostic parameters function arguments terminology

我经常发现自己对如何使用术语'参数'和'参数'感到困惑。它们似乎可以在编程世界中互换使用。

使用它们的正确惯例是什么?

12 个答案:

答案 0 :(得分:205)

参数是函数定义的输入,参数是作为参数传递的东西。

void foo(int bar) { ... }

foo(baz);

在此示例中,barfoo的参数。 baz是传递给foo的参数。

答案 1 :(得分:195)

参数是函数声明中的变量:

functionName(parameter) {
    // do something
}


Argument 是传递给函数的此变量的实际值:

functionName(argument);

答案 2 :(得分:27)

对于user1515422,一个非常具体的例子显示了参数和参数之间的区别:

考虑这个功能:

int divide(int numerator, int denominator) {
    return numerator/denominator;
}

它有两个参数numeratordenominator,在定义时设置。一旦定义,函数的参数是固定的,不会改变。

现在考虑调用该函数:

int result = divide(8, 4);

在这种情况下,84是传递给函数的参数numerator参数设置为参数8的值,denominator设置为4。然后使用设置为参数值的参数来评估函数。您可以将该过程视为等同于:

int divide() {
    int numerator = 8;
    int denominator = 4;
    return numerator/denominator;
}

参数和参数之间的差异类似于变量与其值之间的差异。如果我写int x = 5;,则变量为x,值为5。混淆可能会出现,因为很自然地说“x是五”之类的东西,作为“变量x的值为5”的简写,但希望区别很明显。

这是否澄清了事情?

答案 3 :(得分:13)

当您调用子例程时,参数就是您所拥有的。参数是您在子例程中访问的内容。

argle(foo, bar);

foobar是参数。

public static void main(final String[] args) {
    args.length;
}

args是一个参数。

答案 4 :(得分:6)

parameter维基百科关于这个主题的文章中有很好的部分。

简而言之 - 参数是由函数定义的正式名称,参数是传递给函数的实际值(如5)或事物(如变量)。

答案 5 :(得分:4)

虽然维基百科几乎不是一个权威来源,但它在explaining the terms中做得不错。

我想你可以说参数是参数对象实例的参数......

答案 6 :(得分:2)

定义如下函数时:

MyFunction(param1,param2) {
  print parameter1, parameter
}

定义功能时设置参数。 当您调用这样的函数时:

MyFunction('argument1', 'argument2');

您可以将参数的值设置为您传递的参数。这些论点是你在调用时提出的问题。希望有所帮助。

答案 7 :(得分:1)

简单地说没有重大差异。如果我们深入到这里,我们可以识别diff.Mainly我们知道Argument / Parameter / signature都是相同的。

基本上参数定义了我们传递的数据类型。 Argument 定义了我们传递的实际数据/变量。

参数示例: -

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

答案 8 :(得分:1)

在大多数情况下,程序需要一些有关其被调用环境的信息。执行重复或共享任务的过程对每个调用使用不同的信息。此信息由调用时传递给过程的变量,常量和表达式组成。

要将此信息传递给过程,该过程定义一个参数,并且调用代码将参数传递给该参数。您可以将参数视为停车位,将参数视为汽车。正如不同的汽车可以在不同的时间停放在停车位一样,每次调用程序时,调用代码都可以将不同的参数传递给相同的参数。

<强>参数

参数表示程序在调用它时希望您传递的值。程序的声明定义了它的参数。

定义功能子过程时,请在过程名称后面的括号中指定参数列表。对于每个参数,您可以指定名称,数据类型和传递机制(ByVal或ByRef)。您还可以指示参数是可选的,这意味着调用代码不必为其传递值。

每个参数的名称用作过程中的局部变量。您使用参数名称的方式与使用任何其他变量的方式相同。

<强>参数

参数表示调用过程时传递给过程参数的值。调用代码在调用过程时提供参数。

当您调用函数子过程时,请在过程名称后面的括号中包含参数列表。每个参数对应于列表中相同位置的参数。

与参数定义相反,参数没有名称。每个参数都是一个表达式,它可以包含零个或多个变量,常量和文字。计算表达式的数据类型通常应与为相应参数定义的数据类型匹配,并且在任何情况下都必须可转换为参数类型。

答案 9 :(得分:0)

实际上,参数和参数都是不同类型的参数。那些是

  

1)形式参数 - 变量出现在函数/子程序定义

例如。 (在Java中)

public void foo(Integer integer, String... s2)

这里整数和s2都是形式参数或松散的参数。

  

2)实际参数或参数 - 变量在调用

时出现在子程序中      

已经定义的子程序

例如。 (在Java中) 假设函数“foo”驻留在对象“testObject”中,

testObject.foo(new Integer(1), "test")

因此,函数定义中的变量称为形式参数或简称参数和变量,而调用方法则称为实际参数或参数。我希望它有所帮助。

答案 10 :(得分:0)

把它想象成基本代数。 X是您必须填写的参数,您放在其中的数字是参数。因此,如果你有一个像X + 2这样的等式,X就是你的参数,你为X改变的任何数字都被称为参数。因此,如果使用该等式,则为x补充1,得到1 + 2。这意味着1是一个参数,提供给X的参数。

同样,如果你有像dosomething(“This”)这样的函数,它的定义将是dosomething(string parametername),但是“This”将是提供给参数的实际参数,这里命名为parametername。 / p>

以最简单的方式查看它,参数是参数填充的参数,参数可以是该参数允许的任意数量的事物。

因此,它是参数和参数之间的多对一关系,因为您可以拥有一个可以包含许多有效参数的参数,例如上面的X + 1等式。 X可以是已知的任何数字,并且它们都是有效的。

答案 11 :(得分:0)

变量是一个存储位置和一个包含数据的关联符号名称(标识符)。

参数是传递给函数的变量。

参数是传递给函数的数据(值)。

$variable = 'data/value';

function first($variable){ ... }

function second('data/value'){ ... }
function third(16){ ... }

在函数中,我们首先传递一个参数。

在第二和第三功能中,我们传递参数。