参数和参数之间有什么区别?

1041

当谈论方法时,我从来不确定是否使用"argument"或"parameter"或其他词。无论哪种方式,其他人都知道我的意思,但什么是正确的术语?这些术语的历史是什么?

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

记录一下,我是一个自学的人,没有计算机科学背景。(请不要告诉我去阅读Code Complete,因为我是为了其他没有Steve McConnell的精彩著作副本的人而提出这个问题。)

总结

普遍认为,在团队环境中可以交替使用这些术语。除非你正在定义精确的术语;那么你还可以使用“正式参数”和“实际参数”来消除歧义。


20
我会将它们互换使用,但是还没有人嘲笑过我。 "这个函数有4个参数"和"这个函数接受4个参数"听起来一样。 - Gishu
92
除了在描述参数工作和参数传递等方面时,可以互换使用它们。此时,精确的术语(有时很难表达)是有用的。 - Jon Skeet
6
至少有两个与语言无关的非封闭版本的这个问题:https://dev59.com/THA75IYBdhLWcg3wqK7_ 和 https://dev59.com/hXRC5IYBdhLWcg3wCMrX。还有另一个关于C#的版本,我已经请求合并。 - Pops
3
这是一个不断变化的目标。当我几年前开始学习信息技术时,参数通常都是“形式参数,实际参数”。根据这里的答案,现在显然是相反的顺序。 - user207421
9
我认为无论您处于正式环境还是非正式环境,都应努力使用正确的术语。这很简单。当您调用一个方法时,您会传入参数。当您定义该方法时,您正在定义将从方法/函数调用中获取参数的参数。参数 - 与函数相关联的自变量,并确定函数的值。参数 - 定义特定过程或活动范围的限制或边界。 - jsquaredz
显示剩余3条评论
38个回答

4

我对所有这些答案仍然不满意。 它们都开始谈论“函数声明”,而我的大脑已经开始胡思乱想,想起了独角兽。 这完全没有帮助我记住它,这只是定义。

我想要的是一些我可以立即并永远牢记的东西。

这里,我快速理解的唯一答案是:

"Arguments are actual values that are passed in".

更容易定义参数,只要你知道它们是什么,那么你就知道参数是另一个。

我能想到的另一种方法是:

  • Arguments 是函数外部的变量
  • Parameters 是函数内部的变量

简化为:

Arguments 在外,parameters在内

如果有人想反驳我,可以把你的 arguments 放在外面 ;)


1
这就是我一直记得的:“把你的参数带到外面去”。 - berimbolo

4

Oracle的Java教程这样定义这个区别:

参数指的是方法声明中的变量列表。参数是在调用该方法时传递的实际值。当您调用一个方法时,使用的参数必须与声明的参数在类型和顺序上匹配。

有关参数和参数的更详细讨论:https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html


4

在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
根据Joseph的Alabahari书《C# in a Nutshell》(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
}

在一些人类语言中(如意大利语,俄语),这些术语经常使用同义词。

  • parameter = formal parameter(参数 = 形式参数)
  • argument = actual parameter(参数值 = 实际参数)

在我的大学里,教授们同时使用这两种名称。


3

在Java中创建方法(函数)时,方法的格式如下:

数据类型 方法名称(数据类型 变量名)

括号中的内容是参数,在调用方法(函数)时,我们传递这些参数的值,这些值被称为参数。


3

参数 (计算机编程) - 维基百科中已经完美解释了。

宽泛地说,参数是一种类型,而参数值则是一个实例。

在函数定义f(x) = x*x中,变量x是一个参数;在函数调用f(2)中,值“2”是该函数的参数值。

还有参数 - 维基百科

计算机编程中,通常使用两个概念参数,分别称为形式参数和实际参数,或者更正式地称为形式参数实际参数

例如,在函数定义如下的情况下:

y = f(x) = x + 2,

x是定义函数的形式参数参数)。

当给定一个值计算函数时,如

f(3): 或者,y = f(3) = 3 + 2 = 5,

是定义函数要计算的实际参数参数);它是一个给定的值(实际值),用于替换定义函数的形式参数。(在非正式用语中,“参数”和“参数值”这两个术语可能会不经意地互换使用,从而使用不正确。)


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);

?>

2

甚至更简单的方法...

!中的参数

输出参数!


1
参数 out 没有意义。 - icc97

2

我仔细思考后发现之前的答案是错误的。这里有一个更好的定义:

{想象一下一盒鸡蛋:一包香肠:还有一个女佣} 这些代表了一个被称为“烹饪”的准备函数所需的元素(使用任何名称都可以,假设我的函数名为 Cooking)。

女佣是一个方法。

(你必须 __调用__ 或要求这个 方法 做早餐)(制作早餐的行为是一个称为 Cooking函数)_

鸡蛋和香肠是参数:

(因为你想吃的鸡蛋和香肠数量是 __可变的__。)

你的决定是一个参数:

它代表你选择的鸡蛋和/或香肠的数量的 __值__,你正在进行 Cooking

{记忆法}

_"当你叫女佣来做早餐时,她会与你__争论__你应该吃多少鸡蛋和香肠。她关心你的胆固醇"__

(参数,然后,是你声明并决定传递给函数的参数组合的值)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接