2009-01-09 85 views
177

我经常发现自己与如何使用术语'参数'和'参数'混淆。它们似乎在编程世界中可以互换使用。参数或参数?

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

+0

为了记录,一个密切相关的问题:http://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter(这是制定为C#特定的,而这是语言不可知的;否则基本上是一样的。) – Jonik 2009-08-27 11:27:30

+0

@Jonik:这不是C#的真正具体情况,因为海报还询问了其他编程语言中的术语。另一个问题是年纪较大,并且(在我看来)有更好的答案。 – 2012-08-21 01:27:06

+1

如果我们把它看作是语言不可知的,那么它确实是一个确切的愚蠢。 – 2012-08-21 01:37:47

回答

194

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

void foo(int bar) { ... } 

foo(baz); 

在这个例子中,barfoo的参数。 baz是传递给foo的一个参数。

+11

Rinat有正式的定义 - 你有没有错,但它也不是很正确。 – avgvstvs 2011-04-07 15:47:57

13

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

argle(foo, bar); 

foobar有观点。

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

args是参数。

4

虽然维基百科几乎不是权威来源,但它做的体面的工作explaining the terms

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

188

一个参数是在函数的声明一个变量:

functionName(parameter) { 
    // do something 
} 


An 参数是传递给该函数的此变量的实际值:

functionName(argument); 
5

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

总之 - 参数是通过功能和参数定义的正式名称为实际值(如5)或东西(例如变量)传递到功能。

26

对于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”的缩写,但希望这种区别是明确的。

这是否说明了事情?

1

只是没有重大的区别。如果我们深入到这里,我们可以识别diff.Mainly我们知道参数/参数/签名都是相同的。

基本上参数限定我们passing.Where为参数定义的实际数据/可变我们传递的数据的类型。

参数示例: -

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 
1

在大多数情况下,过程大概需要在它被称为情况的一些信息。执行重复或共享任务的过程对每个呼叫使用不同的信息。该信息由变量,常量和表达式组成,当您调用它时传递给过程。

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

参数

的参数表示该过程需要你的时候你怎么称呼它传递一个值。过程的声明定义了它的参数。

当你定义一个功能Sub过程,你在括号中注明立即进程名之后的参数列表。对于每个参数,可以指定一个名称,一个数据类型和一个传递机制(ByVal或ByRef)。你也可以指出一个参数是可选的,这意味着调用代码不必为它传递一个值。

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

参数

的说法代表了你传递给一个过程参数,当你调用程序的价值。调用代码在调用过程时提供参数。

当你调用一个函数程序,你有一个参数列表中的括号马上过程名以下。每个参数对应于列表中相同位置的参数。

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

0

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

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

为如。 (以Java计)

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

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

2)实际的参数或自变量 - 变量出现在子程序而要求例如

已经定义子程序

。 (在Java中) 假设如果“foo”函数存在于对象“的TestObject”,

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

所以在函数定义的变量称为形参或简单参数和变量,而调用方法被称为实际参数或参数。我希望它有帮助。

0

认为它像基本代数。 X是你必须填写的参数,放在它里面的数字就是参数。所以如果你有一个像X + 2这样的等式,X是你的参数,并且你为X改变的任何数字都被称为参数。所以如果使用这个公式,你补充1的x,你会得到1 + 2。这意味着1是一个参数,提供给参数X.

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

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

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

2

当你定义像函数:

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

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

MyFunction('argument1', 'argument2'); 

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

0

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

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

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

$variable = 'data/value'; 

function first($variable){ ... } 

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

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

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