这个问题在这里已经有答案了:

我经常发现自己对“参数”和“参数”这两个术语的使用方式感到困惑。它们似乎在编程世界中可以互换使用。

它们的正确使用约定是什么?

有帮助吗?

解决方案

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

void foo(int bar) { ... }

foo(baz);

在这个例子中, bar 是一个参数 foo. baz 是一个参数传递给 foo.

其他提示

A 范围 是函数声明中的变量:

functionName(parameter) {
    // do something
}


一个 争论 是传递给函数的该变量的实际值:

functionName(argument);

对于 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 是 5”之类的东西作为“变量 x 的值为 5”的简写,但希望区别是清楚的。

这能澄清事情吗?

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

argle(foo, bar);

foobar 是参数。

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

args 是一个参数。

有一个不错的部分 范围 关于这个主题的维基百科文章。

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

尽管维基百科算不上权威来源,但它在以下方面做得不错: 解释条款.

我猜你可能会说,参数之于参数,就像类之于对象实例一样......

当您定义如下函数时:

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

您可以在定义函数时设置参数。当您像这样调用该函数时:

MyFunction('argument1', 'argument2');

您将参数的值设置为您传递的参数。参数是您在调用问题时放入问题中的内容。希望有帮助。

简单来说,没有什么大的区别。如果我们深入研究,我们可以识别差异。主要是我们知道参数/参数/签名都是相同的。

基本上 范围 定义我们传递的数据类型。其中 争论 定义我们传递的实际数据/变量。

参数示例:-

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)形式参数——变量出现在函数/子程序定义中

例如。(爪哇语)

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

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

2)实际参数或实参——调用子程序时出现在子程序中的变量

已经定义的子程序

例如。(爪哇语) 假设函数 "foo "位于对象 "testObject "中、

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

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

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

同样,如果您有一个像 dosomething("This") 这样的函数,它的定义将是 dosomething(stringparametername),但“This”将是提供给参数的实际参数,此处名为parametername。

用最简单的方式来看,形参就是实参填充的东西,实参可以是该形参允许的任意数量的东西。

因此,参数和参数之间是一种多对一的关系,因为一个参数可以有多个有效参数,就像上面的 X+1 方程一样。X可以是任何已知的数字,并且它们都是有效的。

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

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

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

$variable = 'data/value';

function first($variable){ ... }

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

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

在第二个和第三个函数中,我们传递参数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top