引数とパラメーターの違いは何ですか?


718

メソッドについて口頭で話すとき、引数またはパラメーターという単語を使用するか、それとも他の何かを使用するかはわかりません。他の人は私が何を意味するかを知っていますが、何が正しいのですか、そして用語の歴史は何ですか?

私はC#プログラマーですが、人々が異なる言語で異なる用語を使用しているかどうかも疑問に思います。

記録のために、私はコンピュータサイエンスのバックグラウンドなしで独学しています。(コードコンプリートを読むように言わないでください。これは、Steve McConnellのすばらしい本のコピーをまだ持っていない他の人々の利益のためにお願いしているからです。)

概要

一般的なコンセンサスは、チーム環境でこれらの用語を同じ意味で使用することで問題ないようです。正確な用語を定義している場合を除いて、次に、「正式な引数/パラメータ」と「実際の引数/パラメータ」を使用して明確化することもできます。


9
私はそれらを同じ意味で使用しています。まだ誰も私を笑っていません。「この関数には4つの引数があります。この関数は4つのパラメータを取ります。」同じように聞こえます。
岐阜

54
パラメータがどのように機能するか、引数がどのように渡されるかなどを記述しようとしている場合を除いて、これらを交換可能に使用することは問題ありません。
Jon Skeet、

2
この質問には、言語に依存しない、閉じられていないバージョンが少なくとも2つあります。stackoverflow.com / questions / 3176310 / stackoverflow.com/questions/427653/arguments-or-parametersです。この質問には別のC#バージョンもあります。マージをリクエストしました。
ポップス

1
Steve McConnellのことを言ってくれてうれしい。Robert C. Martinと一緒にソフトウェアの職人技を知っているもう1人の男について知りました。
RBT

3
正式な環境かどうかに関係なく、正しい用語を使用するように努めるべきだと思います。とてもシンプルだと思います。メソッドを呼び出すときは、引数を渡します。メソッドを定義するときは、メソッド/関数呼び出しから引数を取るパラメーターを定義します。引数-関数に関連付けられ、関数の値を決定する独立変数。パラメータ-特定のプロセスまたはアクティビティのスコープを定義する制限または境界。
jsquaredz

回答:


906

パラメータは、メソッド定義の変数です。メソッドが呼び出されると、引数はメソッドのパラメーターに渡すデータになります。

public void MyMethod(string myParam) { }

...

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

196
役立つかもしれない気づきのニーモニック:引数は実際のものです。;)
thSoft 2013年

8
答えは、「パラメーターはメソッド定義の変数である」と述べていますが、「メソッド宣言」と言う方がいいかもしれません[誰かが「宣言」と「定義」を区別している場合]
nandan

110
「パラメータを定義し、引数を作成します。」
Greg M. Krsak 14年

5
パラメータ=>関数を定義するとき、引数=>そのメソッドを呼び出すとき。(私が間違っている場合は訂正してください。)
Prageeth godage 2014年

7
パラメータは名前です。引数は値です。
Aziz Alto

327

関数の宣言ではパラメーターは可変です。

引数は、関数に渡されるこの変数の実際の値です。


7
これらの言語は通常、メソッドに渡された引数/パラメータリストを参照する*argsARGVしないかを示します*params:-)
karatedog

6
*paramsパラメータ名を保持するための変数の名前になります(おそらくイントロスペクションに使用されます)。
trss 2014

6
@karatedogそして、それは実際にはこの区別と完全に一致しています。パラメータは宣言時に名前が付けられ、引数は呼び出し時にのみ認識されます。構文は、値が引数(呼び出し時にのみ認識される)のリスト(宣言時に認識される名前と型)で*argsあるパラメーター argsを宣言します
Emil Lundberg、2017年

72

サブジェクト(パラメーターを参照)には、パラメーター引数という用語を定義および区別するWikipediaのエントリが既にあります。簡単に言うと、パラメータは関数/プロシージャ/メソッドシグネチャの一部であり、引数は実行時および/または呼び出しサイトでパラメータに提供される実際の値です。

ウィキペディアの記事では、2つの用語は同義語で使用されることが多いと述べています(特にコードについて非公式に推論する場合)。

パラメータは一般に引数とも呼ばれますが、引数は、実行時にサブルーチンが呼び出されたときにパラメータ変数に割り当てられた実際の値または参照としてより適切に考えられます。

2つの整数を加算する次のCの関数の例xy考えます。これらはそのパラメーターと呼ばれます。

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

add以下に示す例のように、を使用する呼び出しサイトでは、123および456が呼び出しの引数として参照されます。

int result = add(123, 456);

また、一部の言語仕様(または正式なドキュメント)は、パラメーターまたは引数を排他的に使用し、2つのケースを明確にするために代わりに正式および実際のよう形容詞を使用することを選択します。たとえば、C / C ++のドキュメントでは、関数パラメーター正式な引数と呼び、関数呼び出し引数実際の引数と呼びます。例については、 『Visual C ++言語リファレンス』の「正式な引数と実際の引数」を参照してください


+1は、それらの一般的な使用方法と正式な定義を説明するため、および曖昧さなくそれらを区別するための「正式な」および「実際の」引数/パラメータの一般的な使用に言及するため。
メカニカルカタツムリ

これは素晴らしい説明ですが、概念の単純さと比較して理解することはほとんど不可能です。パラメータは受け入れられるものであり、引数は呼び出されるものです。一方通行です。
ihodonald

69

シンプル:

  • P ARAMETER→ P LACEHOLDER(これは、プレースホルダーが関数の名前に属し、関数本体で使用されることを意味します)
  • A RGUMENT→ A CTUAL VALUE(これは関数呼び出しによって渡された実際の値を意味します)

3
素敵なメモリフック
タンコム


29

関数の宣言ではパラメーターは可変です。

引数は、関数に渡されるこの変数の実際の値です。 ここに画像の説明を入力してください


16

パラメータおよび引数という用語の使用は、プログラマーや作成​​者の間でも多少誤用されています。メソッドを扱う場合、パラメータという用語はメソッドシグネチャ内のプレースホルダを識別するために使用されますが、引数という用語はメソッドに渡す実際の値です。

MCSD Cerfification Toolkit(試験70-483)C#でのプログラミング、第1版、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. このパラメーターは[]になります[]。

答え

(A)

  1. on / in / against / with this parameter
  2. 引数...を取る

(B)

  1. そして、いくつかの例の引数は何ですか
  2. 引数...で使用されます/ in / against / with

オーバーラップ

ご想像のとおり、答えた後:話し言葉では、これらの単語は同じ応答を生成することがあります!

したがって、原則として:

  • 通常、誰かがパラメータ情報を必要とする場合、タイプや変数名などについて詳しく知りたいと考えます。例の引数のみを指定すると混乱する可能性があります。

    • 通常、引数情報が必要な場合は、関数またはそのパラメーターに渡した値を知りたいと思っています。

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

常に次の点に注意してください。-パラメータが受信される間、引数が渡されます。


8

関数/メソッドのパラメーターは、結果の計算に使用する値を説明します。

関数の引数は、関数/メソッドの特定の呼び出し中にこれらのパラメーターに割り当てられた値です。


7

または、メソッドのオプションの引数の場合は、次のように覚えておくとさらに簡単です。

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

}

parameterパラメータ、値、"argument"引数です:)


7

あなたが航空会社だとしましょう。あなたは飛行機を作ります。あなたはそれに席を設置します。次に、飛行機を乗客で満たし、どこかに送ります。乗客(またはむしろ、その時空間的に変更されたバージョン)は下船します。翌日、同じ飛行機と同じ座席を再利用しますが、今回は乗客が異なります。

飛行機はあなたの機能です。

パラメータは座席です。

議論はそれらの席に行く乗客です。


7

パラメータと引数

パラメータと引数に関連するすべての異なる用語は、混乱を招く可能性があります。ただし、いくつかの単純な点を覚えておけば、これらの用語を簡単に処理できます。

  1. 関数の仮パラメーターは関数宣言にリストされ、関数定義の本体で使用されます。(あらゆる種類の)仮パラメーターは、関数が呼び出されたときに何かで埋められる一種のブランクまたはプレースホルダーです。
  2. 引数は、仮パラメータを埋めるために使用されているものです。関数呼び出しを書き留めると、引数は関数名の後の括弧内にリストされます。関数呼び出しが実行されると、仮パラメーターの引数がプラグインされます。
  3. 用語コール値ごとおよびコールバイリファレンスは、プラグインプロセスで使用される機構を指します。値による呼び出し方法では、引数の値のみが使用されます。この値による呼び出しメカニズムでは、仮パラメーターは、対応する引数の値に初期化されるローカル変数です。参照による呼び出しメカニズムでは、引数は変数であり、変数全体が使用されます。参照による呼び出しメカニズムでは、引数変数が仮パラメーターの代わりに使用されるため、仮パラメーターに加えられた変更は、実際には引数変数に対して行われます。

出典:Absolute C ++、Walter Savitch

あれは、

ここに画像の説明を入力してください


6

用語は多少交換可能です。他の回答で説明されている区別は、関数の本体内で使用される名前の正式パラメーターと、呼び出しサイトで提供される値のパラメーターという用語でより適切に表現されます(正式引数引数も共通です)。

また、数学では、引数という用語ははるかに一般的であり、パラメーターは通常、まったく異なるものを意味します(ただし、パラメトリック方程式のパラメーターは、基本的に2つ以上の関数の引数です)。


ただし、ここでも、少なくとも複雑な分析では、引数という用語も多すぎます。
かたつむり

1
私はそれらが交換可能であるという競合のパラメータを持っています。;)
ワイルドカード

5

引数は、パラメーターのインスタンス化です。


4
それは私がずっと前に他のプログラマーから与えられた説明であり、それは非常に明確で簡潔なものだと思いました。そのため、ここに投稿しました。
ポールリヒター

4

はい!パラメータと引数には異なる意味があり、次のように簡単に説明できます。

関数パラメーターは、関数定義にリストされている名前です。

関数の引数は、関数に渡される(および関数が受け取る)実際の値です。


4

コードなしの簡単な説明

「パラメータ」は非常に一般的で幅広いものですが、「引数:は非常に具体的で具体的なものです。これは日常の例で最もよく説明されています:

例1:自動販売機-お金がパラメーター、$ 2.00が引数

ほとんどのマシンは入力を受け取り、出力を返します。たとえば、自動販売機は入力としてお金を受け取り、出力として炭酸飲料を返します。その特定のケースでは、パラメーターとして受け入れます:money。

それでは議論は何ですか?まあ、私がマシンに$ 2.00を入れた場合、引数は次のようになります。

例2:車-ガソリンがパラメータです

車について考えてみましょう。ガソリン(無鉛ガソリン)を入力として受け入れます。これらのマシンは、ガソリンのタイプのパラメーターを受け入れると言えます。議論は私が私の車に入れた正確で具体的な入力です。例:私の場合、議論は次のようになります:無鉛ガソリン/ガソリン40リットル。

例3-引数の詳細

引数は、入力の特定の具体例です。私のマシンが人を入力として受け取り、それらをうそつきではない人に変えたとします。

それでは議論は何ですか?議論は、実際に機械に入れられる特定の人です。たとえば、Colin Powellがマシンに入力された場合、引数はColin Powellになります。

したがって、パラメーターは抽象的な概念としての人ですが、引数は常に、マシンに入力される特定の名前を持つ特定の人になります。議論は具体的で具体的です。

それが違いです。シンプル。

混乱していますか?

コメントを投稿してください。説明を修正します。


3

またはもっと簡単に...

の引数!

パラメータがアウトです!


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は、およびは仮パラメーターでありa、およびbは実際の引数です。



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

ジョセフのアラバハリの本「C#in a Nutshell」(C#7.0、p。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
}

一部の人間の言語(イタリア語、ロシア語)では、これらの用語に同義語が広く使用されています。

  • パラメーター = 仮パラメーター
  • 引数 = 実パラメータ

私の大学では、教授は両方の種類の名前を使用しています。


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

私はそれをじっくり考えて、私の以前の答えが間違っていることに気づきました。これははるかに良い定義です

{ 卵のカートンを想像してください:ソーセージリンクのパック:そしてメイド }これらは、準備のために必要なFunctionの要素を表します:(任意の名前を使用:クッキングが私の関数の名前だとしましょう)。

メイドは方法です。

(あなたがこの__call_か尋ねなければならない方法を朝食を作るために)(朝食を作る行為がある機能と呼ばれる料理)_

卵とソーセージはパラメータです:

(食べたい卵の数とソーセージの数は__variable_なので)

あなたの決定は議論です:

選択した数の調理中の卵やソーセージの__Value_を表します。_

{ 記憶法 }

_「メイドに電話して朝食を作るように頼むとき、彼女はあなたが食べるべき卵とソーセージの数についてあなたと__議論_します。彼女はあなたのコレステロールを心配しています」__

(つまり、引数は、宣言して関数に渡すことを決定したパラメーターの組み合わせの値です)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.