参数和参数有什么区别?


716

在口头上谈论方法时,我永远不确定是否要使用参数参数或其他字词。无论哪种方式,其他人都知道我的意思,但是什么是正确的,以及这些术语的历史呢?

我是C#程序员,但我也想知道人们是否在不同的语言中使用了不同的术语。

出于记录,我是自学成才,没有计算机科学背景。(请不要告诉我阅读Code Complete,因为我是为了其他尚未拥有Steve McConnell出色著作的人而受益。)

摘要

普遍的共识似乎是,在团队环境中可以互换使用这些术语是可以的。除非您正在定义精确的术语;那么您也可以使用“ 形式参数/参数”和“ 实际参数/参数”来消除歧义。


9
我可以互换使用它们。.还没有人嘲笑我。.'此函数有4个参数..此函数有4个参数。' 听起来一样。
2008年

54
可以互换使用它们,除非您要尝试描述参数的工作方式以及如何传递参数等。那时,精确的术语(有时可能很难表达)很有用。
乔恩·斯基特

2
该问题至少有两个与语言无关的非封闭版本:stackoverflow.com/questions/3176310/…stackoverflow.com/questions/427653/arguments-or-parameters。这个问题还有另一个C#版本。我已要求合并。
流行

1
很高兴您提到了史蒂夫·麦康奈尔。我认识了另外一个与Robert C. Martin一起了解软件工艺的人。
RBT

3
我认为,无论您是否处于正式环境中,都应努力使用正确的术语。我认为这很简单。调用方法时,您传入参数。在定义方法时,您正在定义将从方法/函数调用中获取参数的参数。参数-与函数关联并确定函数值的自变量。参数-定义特定过程或活动范围的限制或边界。
jsquaredz

Answers:


903

参数是方法定义中的变量。调用方法时,参数是您传递给方法参数的数据。

public void MyMethod(string myParam) { }

...

string myArg1 = "this is my argument";
myClass.MyMethod(myArg1);

196
可能有用的助记符:参数是实际的。;)
thSoft

8
答案提到“参数是方法定义中的变量”,但最好说“方法声明”(如果有人在“声明”和“定义”之间进行区分)
nandan 2014年

110
“您定义参数,然后创建参数。”
Greg M. Krsak 2014年

5
定义函数时为parameter =>,调用该方法时为parameter =>。(如果我错了
纠正

7
参数是名称。争论是价值观。
阿齐兹·阿尔托

327

参数在函数的声明中是变量。

参数是传递给函数的该变量的实际值。


7
这些语言通常是指传递给方法作为参数/参数列表*argsARGV*params:-)
karatedog

6
*params将是用于保存参数名称的变量的名称(可能用于自省)。
trss 2014年

6
@karatedog实际上,这完全符合这一区别。参数在声明时命名,参数仅在调用时知道。语法*args声明了一个参数, args其值是参数(在调用时才知道其编号)的列表(在声明时已知的名称和类型)。
埃米尔·伦德伯格

72

关于这个主题的维基百科条目已经存在(请参阅Parameter),该条目定义并区分了parameterarguments参数。简而言之,参数是函数/过程/方法签名的一部分,参数是在运行时和/或调用站点为该参数提供的实际值。

Wikipedia文章还指出,这两个术语经常被同义使用(尤其是在非正式地对代码进行推理时):

尽管参数通常也称为自变量,但在运行时调用子例程时,更恰当地将自变量视为分配给参数变量的实际值或引用。

鉴于在C下面的示例函数加入了两个整数,x并且y将被称为它的参数:

int add(int x, int y) {
    return x + y;
}

在使用的呼叫站点(add例如下面显示的示例)中,123456将被称为呼叫的参数

int result = add(123, 456);

另外,某些语言规范(或正式文档)选择仅使用参数或自变量,而使用形容词(如形式实际)代替这两种情况的歧义。例如,C / C ++文档通常将函数参数称为形式参数,将函数调用参数称为实际参数。有关示例,请参见《Visual C ++语言参考》中的“ 形式参数和实际参数 ” 。


+1用于解释它们如何被普遍使用以及它们的形式定义,还用于提及“形式”和“实际”参数/参数的常见用法以毫无歧义地区分它们。
机械蜗牛

这是一个很好的解释,但是与概念的简单性相比,几乎是不可能理解的。参数是被接受的,参数是被称为的。这是一条单向街。
ihodonald '17

69

简单:

  • P ARAMETER → P LACEHOLDER(这意味着占位符属于函数命名并在函数主体中使用)
  • RGUMENT→ CTUAL VALUE(这意味着其由函数调用传递的实际值)

3
漂亮的内存挂钩
Tanckom,


29

参数在函数的声明中是变量。

参数是传递给函数的该变量的实际值。 在此处输入图片说明


16

术语参数和参数的使用在程序员甚至作者之间都被滥用。处理方法时,术语参数用于标识方法签名中的占位符,而术语参数是您传递给方法的实际值。

MCSD认证工具包(考试70-483),使用C#编程,第一版,Wrox,2013年

实际案例

// Define a method with two parameters
int Sum(int num1, int num2)
{
   return num1 + num2;
}

// Call the method using two arguments
var ret = Sum(2, 3);

10

在编辑过程中,我经常对人们忘记的方式不满意:结构语言是基于自然语言的。

用英语

“参数”是占位符。他们以口头语言设置回复格式。根据定义,它是呼叫的一方,限制了响应。

“参数”是正在考虑的位置。您争论自己的观点:您考虑一个论点。

主要区别

论证的主题作用是代理。参数的主题角色是收件人。

互动互动

将参数视为男性部分,使参数成为女性部分。参数进入参数。

用法

参数通常用于定义中。参数通常在调用中使用。

问题

完成句子以减少不和谐。

(A)说到一个定义:

  1. 将使用什么参数[]?
  2. 此参数[]将是什么[]?

(B)说到一个调用:

  1. 您将使用什么参数[]?
  2. 此参数是什么[]?

答案

(一个)

  1. 启用/启用/针对/使用此参数
  2. 论点...接受

(B)

  1. 还有一些示例参数
  2. 自变量...用于/针对/针对

重叠

您可以想象,在回答:用口语表达后,这些单词有时会产生相同的反应!

因此,通常:

  • 通常,如果有人想要参数信息,他们想更多地了解类型,变量名称等。如果仅提供示例参数,他们可能会感到困惑。

    • 通常,如果有人想要参数信息,他们想知道您传递给函数或其参数的值。

8

这个例子可能会有所帮助。

int main () {
   int x = 5; 
   int y = 4;

   sum(x, y); // **x and y are arguments**
}

int sum(int one, int two) { // **one and two are parameters**
   return one + two;
}


8

函数/方法的参数向您描述了用于计算其结果的值。

函数的自变量是在函数/方法的特定调用期间分配给这些参数的值。


7

在方法的可选参数的情况下,也许像这样更容易记住:

public void Method(string parameter = "argument") 
{

}

parameter是参数,它的值"argument"是参数:)


7

假设您是一家航空公司。您制造一架飞机。您在其中安装座椅。然后,您将乘客载满飞机,并将其发送到某个地方。乘客(或者更确切地说是其时空变化的版本)下船。第二天,您将重复使用同一架飞机和相同的座位,但是这次使用的是不同的乘客。

飞机是您的职责。

参数是座位。

争论是那些座位上的乘客。


7

参数和参数

与参数和参数有关的所有不同术语可能会造成混淆。但是,如果您牢记一些简单要点,则可以轻松处理这些术语。

  1. 函数的形式参数在函数声明中列出,并在函数定义的主体中使用。形式参数(任何形式)是一种空白或占位符,在调用函数时会用某种形式填充。
  2. 一种说法是什么,用来填写正式的参数。写下函数调用时,参数会在函数名称后的括号中列出。执行函数调用时,将插入形式参数的参数。
  3. 术语调用-值呼叫按引用指的是在插接入过程中使用的机制。在按值调用方法中,仅使用参数的值。在此按值调用机制中,形式参数是一个局部变量,已初始化为相应参数的值。在按引用调用机制中,参数是一个变量,并且使用了整个变量。在按引用调用机制中,将参数变量替换为形式参数,以便对形式参数进行的任何更改实际上都将对参数变量进行。

资料来源:Absolute C ++,Walter Savitch

那是,

在此处输入图片说明


6

这些术语可以互换。在其他的答案中描述的区别在于更正确地与术语表达形式参数的功能和体内所使用的名称参数在调用站点提供的值(正式说法争论也很常见)。

还要注意的是,在数学术语的说法是更为常见和参数通常意味着完全不同的东西(虽然参数的参数方程本质上是争论的两个或多个功能)。


但是话又说回来,至少在复杂的分析中,术语“ 论据”也被重载了。
机械蜗牛

1
我有一个参数,他们可以互换。;)
通配符

5

参数是参数的实例化。


4
这是我很久以前由另一位程序员给出的解释,我认为这是一个非常清晰简洁的解释。出于这个原因,我在这里发布了它。
Paul Richter 2014年

4

是! 参数和参数的含义不同,可以很容易地解释如下:

功能参数是功能定义中列出的名称。

函数参数是传递给函数(并由函数接收)的实数值。


4

没有代码的简单说明

“参数”是一个非常笼统的东西,但是一个“参数:是一个非常具体的具体东西。最好通过日常示例来说明:

示例1:自动售货机-钱是参数,$ 2.00是参数

大多数机器接受输入并返回输出。例如,一台自动售货机以金钱作为输入,并以碳酸饮料作为输出。在这种情况下,它接受以下参数:金钱。

那是什么呢?好吧,如果我将$ 2.00放入计算机,则参数为:$ 2.00-这是使用的非常具体的输入。

示例2:汽车-汽油是参数

让我们考虑一辆汽车:他们接受汽油(无铅汽油)作为输入。可以说这些机器接受类型参数:汽油。参数将是我输入到汽车中的确切和具体的输入。例如,就我而言,论点是:40升无铅汽油/汽油。

示例3-论证的阐述

参数是输入的特定示例。假设我的机器将一个人作为输入并将其变成不是骗子的人。

那是什么呢?参数将是实际放入机器的特定人员。例如,如果将Colin Powell放入机器,则参数将为Colin Powell。

因此,参数将是一个抽象概念的人,但参数将始终是放入计算机的具有特定名称特定人。该论点是具体而具体的。

就是这样。简单。

困惑?

发表评论,我会解决的问题。



3

它们在C语言中的用法没有太大差异,这两个术语都在实践中使用。通常,参数通常与函数一起使用。函数调用语句传递的值称为参数,而参数将是在函数定义中复制值的变量(称为形式参数)。

int main ()
{
   /* local variable definition */
   int a = 100;
   int b = 200;
   int ret;

   /* calling a function to get max value */
   ret = max(a, b);

   printf( "Max value is : %d\n", ret );

   return 0;
}

/* function returning the max between two numbers */
int max(int num1, int num2) 
{
   /* local variable declaration */
   int result;

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

在上面的代码中,num1num2是形式参数,并且ab是实际参数。



3

从逻辑上讲,我们实际上是在谈论同一件事。但是我认为一个简单的隐喻将有助于解决这一难题。

如果可以将隐喻称为各种连接点,我们可以将它们等同为墙上的插入点。在这种情况下,我们可以考虑如下参数和参数。

参数是可以采用各种不同形状的插头的插座。但是只有某些类型的插头适合它们。
参数将是插入插头点/插座以激活某些设备的实际插头。


3

参数是一个变量在函数定义
参数是一个参数的

<?php

    /* define function */
    function myFunction($parameter1, $parameter2)
    {
        echo "This is value of paramater 1: {$parameter1} <br />";
        echo "This is value of paramater 2: {$parameter2} <br />";
    }

    /* call function with arguments*/
    myFunction(1, 2);

?>

3

一般而言,术语参数和自变量可互换使用,以表示传递给函数的信息。

但是,从功能的角度来看:

  • 参数是在函数定义的括号内列出的变量。
  • 一种说法是,当它被称为发送到该函数的值。

2

当我们用Java创建方法(函数)时,这样的方法。

data-type name of the method (data-type variable-name)

在括号中,这些是参数,当我们调用方法(函数)时,我们传递该参数的值,即参数。


2

根据约瑟夫·阿拉巴哈里(Joseph's Alabahari)的著作《坚果中的C#》(C#7.0,第49页):

static void Foo (int x)
{
    x = x + 1; // When you're talking in context of this method x is parameter
    Console.WriteLine (x);
}
static void Main()
{
    Foo (8); // an argument of 8. 
             // When you're talking from the outer scope point of view
}

在某些人类语言(afaik意大利语,俄语)中,同义词广泛用于这些术语。

  • 参数 = 形式参数
  • 参数 = 实际参数

在我的大学里,教授使用两种名字。


0

参数是函数接收到的变量,因此它们在函数声明中可见,它们包含变量名称及其数据类型。参数是传递给另一个函数的实际值。这就是为什么我们可以在函数调用中看到它们的原因。它们只是没有数据类型的值


0

函数的形式参数在函数声明中列出,并在函数定义的主体中使用。形式参数(任何形式)是一种空白或占位符,在调用函数时会用某种形式填充。

一种说法是什么,用来填写正式的参数。写下函数调用时,参数会在函数名称后的括号中列出。执行函数调用时,将插入形式参数的参数。

术语调用-值呼叫按引用指的是在插接入过程中使用的机制。在按值调用方法中,仅使用参数的值。在此按值调用机制中,形式参数是一个局部变量,已初始化为相应参数的值。在按引用调用机制中,参数是一个变量,并且使用了整个变量。在按引用调用机制中,将参数变量替换为形式参数,以便对形式参数进行的任何更改实际上都将对参数变量进行。


0

参数是变量,用于存储传递到函数中以供该函数使用的数据。参数是调用函数时传递给函数的实际数据:

// x and y are parameters in this function declaration
function add(x, y) {
  // function body
  var sum = x + y;
  return sum; // return statement
}

// 1 and 2 are passed into the function as arguments
var sum = add(1, 2);

0

我经过仔细考虑,意识到我以前的回答是错误的。这是一个更好的定义

{ 想象一个鸡蛋盒:一包香肠链接:和一个女仆 }这些代表了准备工作所需的功能元素::(使用任何名称:可以说烹饪是我功能的名称)。

女仆是一种方法。

(您必须__call_或要求此方法做早餐)(做早餐的行为是一个称为烹调功能)_

鸡蛋和香肠是参数:

(因为您要吃的鸡蛋数和香肠数是__variable_。)_

您的决定是一个论点:

它代表您正在烹饪的鸡蛋和/或香肠的选定数量的__Value_。

{ 助记符 }

_“当您打电话给女仆并请她做早餐时,她________与您争论应该吃多少鸡蛋和香肠。她担心您的胆固醇。” __

(那么,参数就是您声明并决定传递给Function的Parameters的组合的值)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.