2011-09-13 5 views
-1

なぜterm引数は、関数またはメソッドに関してtermパラメータと同じ意味で使用されますか?私にはばかばかしいように見えますが、実際にはそれが機能するということを除いて、実際にはプログラミング全体を損なうものです。cのパラメータと同義語の引数、およびC++

+0

申し訳ありません。違いを説明し、どの用語をいつ使うべきかを教えてください。 – Gabe

+0

http://ja.wikipedia.org/wiki/Parameter_%28computer_programming%29 –

+1

@サミン、あなたの質問の本質は悪いとは思わない(_ "建設的ではない" _)。新しいプログラマにとって、パラメータと引数の適切な使い分けを明確にすることは有益です。しかし、2番目の文はあなたの質問の信頼性を破壊しました。このトーンは、議論の余地があり、わずかに炎症性である。 –

答えて

5

用語を互換的に使用することは間違っています。

引数は、関数呼び出しで渡される値です。

パラメータは、引数値がコピーされる関数のローカルオブジェクトです。例えば

void foo(int parameter) { 
    /* ... */ 
} 

/* ... */ 

int argument = 42; 
foo(argument); 

このために決定的な基準は、C standard(3.7MのPDF)です。 の引数のパラメータは、それぞれ3.3と3.15で定義されています。

+0

Ref。 [パラメータ(コンピュータサイエンス)](http://en.wikipedia.org/wiki/Parameter_%28computer_science%29):これらの2つの用語は、時にはゆるやかに置き換えて使用されます。特に、「引数」の代わりに「引数」が使用されることがあります。それにもかかわらず、違いがあります。プロシージャ定義にパラメータが正しく表示されます。プロシージャコールで引数が表示されます。 –

+0

@Keith:closeですが、 'void foo(int){}'としてC99またはC++で定義された関数は、引数がコピーされる関数のローカルオブジェクトがなくても、1つのパラメータを持ちます。パラメータは、引数値が割り当てられる正式に指定されたエンティティです。値を含む関数ローカルオブジェクトが存在しないかどうかは関係ありません。 –

+0

@Steve:C++ではyesですが、Cでは無効です。関数宣言でパラメータ名を省略することはできますが、定義で省略することはできません。 –

2

この本は、一貫して認められた値と渡された値 について話すとき、関数の内部と引数使用 を参照するためにパラメータを使用していますアンドレイ・アレキの著書「Dプログラミング言語」

を引用します起動時に外部から関数に渡されます。

この用語は、しばしば同じ意味で使用されています。しかし、Andreiが述べているように、より多くの経験豊富なプログラマーの間でそれらを使用することは明らかです。

関連する問題