参数和参数有什么区别?

在口头谈论方法时,我总是不知道该用论点还是参数这个词,或者别的什么词。不管怎样,其他人都知道我的意思,但是什么是正确的,这些术语的历史是什么?

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

为了记录在案,我是自学成才的,没有计算机科学的背景。(请不要告诉我读代码完成,因为我问这个问题是为了那些还没有史蒂夫麦康奈尔这本奇妙的书的人的利益。)

总结

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

374087 次浏览

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

论点是传递给函数的此变量的实际值。

参数是调用函数时必须填写的东西。你放进去的是参数。

简单设置:参数进入参数,参数是参数的值。

更多信息:http://en.wikipedia.org/wiki/Parameter_(computer_science)#Parameters_and_arguments

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

public void MyMethod(string myParam) { }
...
string myArg1 = "this is my argument";myClass.MyMethod(myArg1);

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

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

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

维基百科文章还指出,这两个术语通常是同义词(尤其是在非正式地推理代码时):

虽然参数也很常见称为论点,论点被更恰当地认为是指定的实际值或参考参数变量时子程序在运行时调用。

给定C中添加两个整数的以下示例函数,xy将被称为其参数:

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

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

int result = add(123, 456);

此外,一些语言规范(或形式留档)选择专门使用参数论点,并使用形容词正式实际来消除这两种情况之间的歧义。例如,C/C++留档通常将函数参数称为正式论据,将函数调用参数称为实际论据。例如,参见视觉C++语言参考中的“正式和实际论点”。

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

另请注意,在数学中,术语论点更为常见,而参数通常意味着完全不同的东西(尽管参数方程中的参数本质上是两个或多个函数的论点)。

或者更简单…

争论在!

参数出来了!

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

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

它们在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;elseresult = num2;
return result;}

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

或者,在方法的可选参数的情况下,像这样记住可能更简单:

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

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

假设你是一家航空公司。你造了一架飞机。你在里面安装了座位。然后,你把飞机装满乘客,然后把它送到某个地方。乘客下机。第二天,你重复使用同一架飞机,同样的座位,但这次乘客不同。

飞机是你的功能。

参数是座位。

争论的是坐在这些座位上的乘客。

function fly(seat1, seat2) {seat1.sayMyName();// Estravenseat2.sayMyName();
etc.}
var passenger1 = "Estraven";var passenger2 = "Genly Ai";
fly(passenger1, passenger2);

参数是参数的实例化。

在编辑中,我经常被人们忘记:结构语言是基于自然语言的。

用英语

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

“论点”是一个正在考虑的立场。你争论你的观点:你考虑一个论点。

主要区别

论据的主位角色是主体,参数的主位角色是接受者。

交互

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

用法

定义中使用的参数是通常。调用中使用的参数是通常

问题

完成句子,使它不那么不和谐。

(一)关于定义:

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

(B)说到援引:

  1. 你会使用什么参数,[]?
  2. 什么[]将是[]这个参数?

答案

(A)

  1. 在/在/反对/使用此参数
  2. 论据……采取

(B)

  1. 有哪些示例论点?
  2. 论据…用于/在/反对/与

重叠

你可以想象,在回答:在口语中,这些词有时会产生相同的反应!

因此,作为一项规则:

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

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

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

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

真实场景

// Define a method with two parametersint Sum(int num1, int num2){return num1 + num2;}
// Call the method using two argumentsvar ret = Sum(2, 3);

没有代码的简单解释

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

示例1:自动售货机-Money是参数,2美元是参数

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

那么参数是什么?好吧,如果我把2美元投入机器,那么参数是:2美元-它是使用的非常具体的输入。

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

让我们考虑一辆汽车:他们接受汽油(无铅汽油)作为输入。可以说,这些机器接受参数类型:汽油。参数将是我放入我车里的确切和具体的输入。例如,在我的情况下,参数将是: 40升无铅汽油/汽油。

示例3-论点的详细说明

参数是输入的一个特殊和具体的例子。假设我的机器将一个人作为输入,并将他们变成一个不撒谎的人。

那么什么是论点呢?论点将是实际被放入机器的特定人。例如,如果科林·鲍威尔被放入机器,那么论点将是科林·鲍威尔。

因此,参数将是作为抽象概念的人,但参数将始终是特定的人,其中特定名称被放入机器。参数是具体而具体的。

这就是区别。很简单。

困惑?

发表评论,我会整理解释。

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

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

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

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

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

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

参数和参数

所有与参数和参数有关的不同术语可能会令人困惑。但是,如果你记住几个简单的要点,您将能够轻松处理这些条款。

  1. 函数的形式参数列在函数声明中,并在函数定义的主体中使用。A形式参数(任何类型)是一种空白或占位符当函数被调用时,用一些东西填充。
  2. An论点是用来填充形式参数的东西。当您写下函数调用时,参数列在函数名称后的括号。当函数调用是执行时,插入形式参数的参数。
  3. 术语按值调用引用调用指的是在插入过程中使用。在按值调用方法中仅使用参数的值。在这个按值调用中机制,形式参数是一个局部变量,即初始化为相应参数的值。在引用调用机制参数是一个变量,并且使用整个变量。在按引用调用机制中参数变量替换形式参数对形式参数所做的任何更改实际上都是参数变量。

来源:绝对C++Walter Savitch

那就是,

在此处输入图片描述

简单:

  • PARAMETER→PLACEHOLDER(这意味着占位符属于函数命名并在函数体中使用)
  • 一个RGUment→一个CTUAL VALUE(这意味着函数调用传递的实际值)

从逻辑上讲,我们实际上在谈论同样的事情。但我认为一个简单的比喻将有助于解决这个困境。

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

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

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

论点用于填充形式参数。当您写下函数调用时,参数列在函数名称后的括号中。当执行函数调用时,参数被插入形式参数。

术语按值调用引用调用指的是插入过程中使用的机制。在按值调用方法中,只使用参数的值。在这种按值调用机制中,形式参数是一个局部变量,初始化为相应参数的值。在按引用调用机制中,参数是一个变量,使用整个变量。在按引用调用机制中,参数变量被替换为形式参数,因此对形式参数所做的任何更改实际上都是对参数变量所做的。

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

函数参数范围是函数定义中列出的名称。

函数论点是传递给(和接收到)函数的实值。

参数范围是用于存储传递给函数以供函数使用的数据的变量。论点是调用函数时传递给函数的实际数据:

// x and y are parameters in this function declarationfunction add(x, y) {// function bodyvar sum = x + y;return sum; // return statement}
// 1 and 2 are passed into the function as argumentsvar sum = add(1, 2);

永远记住:
参数在接收参数时传递。

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

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

女仆是一种方法。

(你必须__call_或要求这个方法做早餐)(做早餐的行为是函数烹饪)_

鸡蛋和香肠是参数:

(因为你想吃的鸡蛋和香肠的数量__variable_。)_

你的决定是一个论点:

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

{助记符}

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

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

根据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 parameterConsole.WriteLine (x);}static void Main(){Foo (8); // an argument of 8.// When you're talking from the outer scope point of view}

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

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

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

它在参数(计算机编程)-维基百科中解释得很好

松散地说,参数是一个类型,参数是一个实例。

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

参数-维基百科

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

例如,在函数的定义中,例如

y = f(x) = x + 2,

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

当函数计算给定值时,如

f(3): or, y = f(3) = 3 + 2 = 5,

是定义函数求值的实际参数论点);它是一个给定的值(实际值),用于替换定义函数的形式参数。(在随意使用中,术语参数论点可能会无意中互换,从而使用错误。)

你需要回归基础。构造函数和方法都有参数和论点。许多人甚至称构造函数为特殊类型的方法。这就是方法的声明方式参数被使用

      type name(parameters){//body of method}

这就是构造函数参数被使用的声明方式:

classname(parameters){//body}

现在让我们看一个示例代码,我们使用它来计算立方体的体积:

public class cuboid {double width;double height;double depth;
cuboid(double w,double h,double d) {//Here w,h and d are parameters of constructorthis.width=w;this.height=h;this.depth=d;}
public double volume() {double v;v=width*height*depth;return v;}public static void main(String args[]){cuboid c1=new cuboid(10,20,30);//Here 10,20 and 30 are arguments of a constructordouble vol;vol=c1.volume();System.out.println("Volume is:"+vol);
}}

所以现在你明白了,当我们在代码后面的某个地方调用一个对象的构造函数/方法时,我们传递的是参数而不是参数。因此,参数仅限于定义逻辑对象的地方,但是当物理对象被实际创建时,参数就会发挥作用。

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

论点是传递给函数的变量的实际值。

代码示例的图像。函数sum接受参数Param1和Param2。它返回Param1加上Param2。函数sum用参数5和6调用。图像指出Param1和Param2是参数,而5和6是参数。

参数是函数定义中的变量
参数是参数的

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

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


Brian W. Kernighan和Dennis M. Ritchie的C编程语言(第2版)(1988年4月):

第25页,第1.7节-函数

我们通常将参数用于函数定义中括号列表中命名的变量,论点用于函数调用中使用的值。术语形式论证实际论点有时用于相同的区分。

ISO/IEC 9899:2018(C18):

3.3

论点

实际论点

DEPRECATED:实际参数

函数调用表达式中以括号为界的逗号分隔列表中的表达式,或类似函数的宏调用中以括号为界的逗号分隔列表中的一系列预处理标记。


3.16

参数

形式参数

废止:正式论点

对象声明为函数声明或定义的一部分,该声明或定义在函数条目时获取值,或者从逗号分隔的列表中获取标识符,该列表由类似函数的宏定义中宏名称后面的括号包围。

一般来说,术语参数和参数可以互换使用来表示传递给函数的信息。

然而,从函数的角度来看:

  • 参数是函数定义括号内列出的变量。
  • 论点是调用函数时发送给函数的值。
  • 参数
    • 已经“内置”到函数中的值。
    • 可以更改参数,以便该函数可以用于其他事情。
  • 论点
    • 一个函数的输入
    • 影响函数结果的变量。

来源

这是一个key: value的问题。

参数是关键

论点是值

/****************************************/

示例:

姓名:“彼得”

/********/

让printName=(姓名)=>console.log(姓名

打印名称(“彼得”

/********/

在这种情况下,参数是“姓名”,论点是“彼得”。

考虑下面的java代码。

public class Test{public String hello(String name){return "Hello Mr."+name;}
public static void main(String args[]){Test test = new Test();String myName = "James Bond";test.hello(myName);}}

hello(String name)的方法定义声明了一个名为name的String参数。在main方法中,我们通过传递论点 myName来调用hello方法。

因此,参数是占位符,其中as参数是方法的实际值。

我对所有这些答案仍然不满意。他们都开始谈论“函数声明”,我的猴子大脑已经离开了,开始思考独角兽。这对我的记忆一点帮助都没有,这只是定义。

我想要的东西,我可以立即和永远保持在我的脑海里。

我很快理解的这里只回答是:

"一个rguments是一个传入的实际值"。

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

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

  • 论点是变量外面是函数
  • 参数范围是变量里面是函数

简化为:

外部参数,内部参数

如果有人不同意我的观点,你可以把你的论点留在外面,把你的参数带进来;)