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

我是一名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;
}

其他回答

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

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

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

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

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

给定以下C语言中两个整数相加的示例函数,x和y将被称为它的参数:

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

在使用add的调用站点中,例如下面所示的示例,123和456将被引用为调用的参数。

int result = add(123, 456);

此外,一些语言规范(或正式文档)选择专门使用参数或参数,并使用像正式和实际这样的形容词来消除两种情况之间的歧义。例如,C/ c++文档经常将函数形参作为正式实参,将函数调用实参作为实际实参。有关示例,请参阅Visual c++语言参考手册中的“正式和实际参数”。

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

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

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

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

考虑下面的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方法。

parameter是占位符,而argument是方法的实际值。