当口头谈论方法时,我从不确定是否应该使用参数或参数或其他词。不管怎样,其他人都知道我的意思,但什么是正确的,这些术语的历史是什么?

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

声明一下,我是自学的,没有计算机科学的背景。(请不要让我去读《代码完成》,因为我这么做是为了让那些还没有史蒂夫·麦康奈尔这本了不起的书的人受益。)

总结

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


当前回答

无需代码的简单解释

“参数”是一个非常一般、广泛的东西,而“参数”是一个非常具体、具体的东西。这可以通过日常生活中的例子来最好地说明:

例1:自动售货机—Money是参数,$2.00是参数

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

那么论证是什么呢?如果我往机器里放2美元,那么参数是:2美元-这是使用的非常具体的输入。

例2:汽车-汽油是参数

让我们考虑一辆汽车:他们接受汽油(无铅汽油)作为输入。可以说,这些机器接受的参数类型:汽油。这个论证将是我对我的车进行的精确而具体的输入。例:在我的例子中,论点是:40升无铅汽油/汽油。

例3 -详述论证

参数是输入的一个特定的例子。假设我的机器把一个人作为输入,把他们变成一个不撒谎的人。

那么什么是论证呢?这个参数是被放进机器里的那个人。例如,如果把科林·鲍威尔放进机器里,那么辩论就是科林·鲍威尔。

所以参数是一个抽象的概念,但参数总是一个特定的人,有一个特定的名字,被放入机器。这个论点是具体而具体的。

这就是区别。简单。

困惑吗?

请发表评论,我会解释的。

其他回答

Oracle的Java教程这样定义这个区别: 参数指的是方法声明中的变量列表。参数是调用方法时传入的实际值。调用方法时,所使用的实参必须在类型和顺序上与声明的形参匹配。

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

这些术语在某种程度上是可以互换的。其他答案中描述的区别用术语形式形参表示函数体中使用的名称,用术语形参表示调用站点提供的值(形式实参和实参也很常见)更为恰当。

还要注意的是,在数学中,参数(argument)这个词更常见,而参数(parameter)通常意味着完全不同的东西(尽管参数方程中的参数本质上是两个或多个函数的参数)。

我仔细想了想,意识到我之前的答案是错的。这里有一个更好的定义

{想象一盒鸡蛋:一包香肠链接:和一个女佣}这些代表一个函数的元素,需要准备称为:(使用任何名称:假设烹饪是我的函数的名称)。

Maid是一种方法。

(你必须调用或询问这个方法来做早餐)(做早餐的行为是一个叫做烹饪的功能)_

鸡蛋和香肠

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

你的决定是一个论点:

它表示你正在烹饪的鸡蛋和/或香肠的数量。_

{助记}

“当你打电话给女仆让她做早餐时,她和你争论你应该吃多少鸡蛋和香肠。她担心你的胆固醇__

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

由于我的背景和主要环境是C语言,我将从实际的C标准和一本重要的参考书中提供一些关于这个主题的陈述/引用,这本书也是C语言的一个开发人员写的,它经常被引用,通常被视为C语言的第一个非官方标准:


C编程语言(第二版),作者Brian W. Kernighan和Dennis M. Ritchie(1988年4月):

第25页,第1.7节-功能 在函数定义中,我们通常将在括号内列表中命名的变量使用形参,将在函数调用中使用的值使用形参。术语形式论证和实际论证有时用于同样的区别。

ISO/IEC 9899:2018 (C18):

3.3 论点 实际参数 DEPRECATED:实际参数 函数调用表达式中以圆括号为界的逗号分隔列表中的表达式,或者类函数宏调用中以圆括号为界的逗号分隔列表中的预处理令牌序列。


3.16 参数 形式参数 弃用:正式的参数 对象,该对象声明为函数声明或定义的一部分,在函数的入口处获取值,或者在类函数宏定义中,由紧接在宏名称后面的圆括号括起来的逗号分隔的列表中获取标识符。

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