2009-01-09 12 views
177

Ich bin oft verwirrt, wie die Begriffe "Argumente" und "Parameter" verwendet werden. Sie scheinen in der Programmierwelt austauschbar zu sein.Argumente oder Parameter?

Was ist die richtige Konvention für ihre Verwendung?

+0

Für die Aufzeichnung, eine eng verwandte Frage: http://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter (das formuliert wird, um C# spezifisch zu sein, während das ist sprachunabhängig, im Prinzip dasselbe. – Jonik

+0

@Jonik: Es ist nicht wirklich spezifisch für C#, da das Poster auch nach den Begriffen in anderen Programmiersprachen gefragt hat. Die andere Frage ist älter und (meiner Meinung nach) hat bessere Antworten. –

+1

Und wenn wir es als sprachunabhängig betrachten, dann ist es wirklich eine exakte Täuschung. –

Antwort

194

Parameter sind die Dinge, die durch Funktionen als Eingabe definiert werden, Argumente sind die Dinge, die als Parameter übergeben werden.

void foo(int bar) { ... } 

foo(baz); 

In diesem Beispiel bar ist ein Parameter für foo. baz ist ein Argument, das an foo übergeben wird.

+11

Rinat hat die formale Definition - was Sie haben, ist nicht falsch, aber es ist auch nicht ganz richtig. – avgvstvs

+0

Es ist jetzt gelöst! :) – nirjhor

13

Argumente sind, was Sie haben, wenn Sie ein Unterprogramm aufrufen. Auf Parameter greifen Sie in der Subroutine zu.

argle(foo, bar); 

foo und bar sind Argumente.

public static void main(final String[] args) { 
    args.length; 
} 

args ist ein Parameter.

+1

"args ist ein Parameter". Würden Sie "args" hier als Namenswahl akzeptieren? – Liam

+0

@Liam Ich hätte es wahrscheinlich nicht gewählt, aber das ist die Konvention, also bleibe ich dran, um Verwirrung zu vermeiden. –

+9

@Liam: Ein bisschen spät hier, aber: 'args' ist ein Parameter, aber sein Inhalt sind die Argumente, die in der Befehlszeile übergeben wurden, um das Programm zu starten. Das Aufrufen von 'parameters' wäre falsch, da die Variable selbst (in der Methodensignatur) ein Parameter ist, während der Inhalt dieses Arrays (runtime) keine Parameter ist. – ColinD

4

Obwohl Wikipedia kaum eine autoritative Quelle ist, macht es einen anständigen Job von explaining the terms.

ich Sie erraten könnte sagen, dass Parameter Argumente, welche Klassen sind Instanzen von Objekten ...

188

A Parameter ist eine Variable in der Deklaration einer Funktion:

functionName(parameter) { 
    // do something 
} 


Ein Argument ist der tatsächliche Wert dieser Variablen, die an die Funktion übergeben wird:

functionName(argument); 
+30

Dies ist die ** formelle ** und ** korrekte ** Erklärung. – avgvstvs

+6

Ah, also ist ein _parameter_ ein _formales Argument_ und ein _argument_ ist ein _aktuelles Argument_. ;-) –

5

Es gibt einen schönen Abschnitt in parameter Wikipedia-Artikel zu diesem Thema.

Kurz - Parameter sind die formalen durch die Funktion definierten Namen und Argument Istwert ist (wie 5) oder Sache (wie Variable) in Funktion übergeben.

26

Für user1515422, ein sehr konkretes Beispiel den Unterschied zwischen Parameter und Argumente, die zeigen:

diese Funktion vor:

int divide(int numerator, int denominator) { 
    return numerator/denominator; 
} 

Es hat zwei Parameter: numerator und denominator, gesetzt, wenn es definiert wird. Einmal definiert, sind die Parameter einer Funktion festgelegt und ändern sich nicht.

int result = divide(8, 4); 

In diesem Fall 8 und 4 sind die Argumente an die Funktion übergeben:

nun einen Aufruf dieser Funktion prüfen. Der Parameter numerator wird auf den Wert des Arguments 8 gesetzt und denominator wird auf 4 festgelegt. Dann wird die Funktion mit den auf den Wert der Argumente gesetzten Parametern ausgewertet. Sie können als Äquivalent des Prozesses denken:

int divide() { 
    int numerator = 8; 
    int denominator = 4; 
    return numerator/denominator; 
} 

Der Unterschied zwischen einem Parameter und Argument für den Unterschied zwischen einer Variablen und ihren Wert verwandt ist. Wenn ich int x = 5; schreibe, ist die Variable x und der Wert ist 5. Verwirrung kann entstehen, weil es natürlich ist, Dinge wie "x ist fünf" zu sagen, als Abkürzung für "Die Variable x hat den Wert 5", aber hoffentlich ist die Unterscheidung klar.

Verdeutlicht das Dinge?

1

Es gibt einfach keine großen Unterschiede. Wenn wir tief hineingehen, können wir den Unterschied identifizieren. Hauptsächlich wissen wir, dass Argument/Parameter/Signatur alle gleich sind.

Grundsätzlich Parameter definiert die Art der Daten, die wir als passing.Where Argument sind die tatsächlichen Daten/Variable definiert sind wir vorbei.

Parameter Beispiel: -

int add(int a,int b){ //Here a and be both can treated as Parameter 
return a+b; 
} 

Argument Beispiel: -

int return_result=add(3,4); // Here 3 and 4 both can treated as Argument 

or 

int x=3,y=4; 
int return_result=add(x,y);// Here x and y both can treated as Argument 
1

In den meisten Fällen muss ein Verfahren einige Informationen über die Umstände, unter denen sie aufgerufen wurde. Eine Prozedur, die wiederholte oder geteilte Tasks ausführt, verwendet für jeden Aufruf unterschiedliche Informationen. Diese Informationen bestehen aus Variablen, Konstanten und Ausdrücken, die Sie beim Aufruf an die Prozedur übergeben.

Um diese Informationen an die Prozedur zu übermitteln, definiert die Prozedur einen Parameter, und der aufrufende Code übergibt ein Argument an diesen Parameter. Sie können sich den Parameter als Parkplatz und das Argument als Automobil vorstellen. So wie verschiedene Autos zu unterschiedlichen Zeiten auf dem Parkplatz parken können, kann der aufrufende Code jedes Mal, wenn er die Prozedur aufruft, ein anderes Argument an denselben Parameter übergeben.

Parameter

Ein Parameter stellt einen Wert dar, dass die Prozedur, die Sie weitergeben erwartet, wenn Sie es nennen. Die Deklaration der Prozedur definiert ihre Parameter.

Wenn Sie eine Funktion oder Sub-Prozedur definieren, geben Sie eine Parameterliste in Klammern unmittelbar nach dem Prozedurnamen. Für jeden Parameter geben Sie einen Namen, einen Datentyp und einen Übergabemechanismus an (ByVal oder ByRef). Sie können auch angeben, dass ein Parameter optional ist, dh der aufrufende Code muss keinen Wert übergeben.

Der Name jedes Parameters dient als lokale Variable innerhalb der Prozedur. Sie verwenden den Parameternamen genauso, wie Sie eine andere Variable verwenden.

Argumente

Ein Argument repräsentiert den Wert, den Sie an eine Prozedur-Parameter übergeben, wenn Sie die Prozedur aufrufen. Der aufrufende Code liefert die Argumente, wenn er die Prozedur aufruft.

Wenn Sie eine Funktion oder Sub-Prozedur nennen, schließen Sie ein Argument Liste in Klammern unmittelbar nach dem Prozedurnamen. Jedes Argument entspricht dem Parameter an derselben Position in der Liste.

Im Gegensatz zur Parameterdefinition haben Argumente keine Namen. Jedes Argument ist ein Ausdruck, der null oder mehr Variablen, Konstanten und Literale enthalten kann. Der Datentyp des ausgewerteten Ausdrucks sollte normalerweise dem Datentyp entsprechen, der für den entsprechenden Parameter definiert wurde, und in jedem Fall muss er in den Parametertyp konvertierbar sein.

0

In der Tat beide Parameter und Argument sind verschiedene Arten von Parametern. Das sind

1) Formalparameter - Variablen erscheinen in Funktion/Unterprogramm Definitionen

für zB. (in Java)

Hier sind sowohl Integer als auch s2 formale Parameter oder Parameter, die losgelöst sprechen.

2) Die tatsächlichen Parameter oder Argumente - Variablen in Subroutinen erscheinen, während die

für zB

bereits definierte Unterprogramm aufgerufen wird. (In Java) annehmen Wenn die Funktion „foo“ befindet sich im Objekt „testobject“,

testObject.foo(new Integer(1), "test") 

So Variablen in der Funktionsdefinition genannt formalen Parameter oder einfach Parameter und Variablen beim Aufruf Methoden als tatsächliche Parameter aufgerufen werden oder Argumente. Ich hoffe, es hilft.

0

Denken Sie daran wie grundlegende Algebra. X ist der Parameter, den Sie ausfüllen müssen, und die Zahl, die Sie darin platzieren, ist das Argument. Wenn Sie also eine Gleichung wie X + 2 haben, ist X Ihr Parameter und alle Zahlen, die Sie für X ändern, werden als Argumente bekannt. Also, wenn Sie diese Gleichung verwenden, ergänzen Sie 1 für x, Sie erhalten 1 + 2. Das bedeutet, dass 1 ein Argument ist, das an den Parameter von X übergeben wird.

Ebenso, wenn Sie eine Funktion wie dosomething ("This") haben, wäre die Definition dosomething (String parametername), aber "This" wäre das eigentliche Argument, das dem Parameter, hier parametername genannt, übergeben wird.

In der einfachsten Weise, um es zu betrachten, ist der Parameter die Sache, die das Argument ausfüllt, und das Argument kann eine beliebige Anzahl von Dingen sein, die von diesem Parameter erlaubt werden.

Es ist also eine Viele-zu-Eins-Beziehung zwischen Parametern und Argumenten, da Sie einen Parameter haben können, der viele gültige Argumente haben kann, wie unsere obige X + 1-Gleichung. X kann eine beliebige Zahl sein und sie sind alle gültig.

2

Wenn Sie eine Funktion wie definieren:

MyFunction(param1,param2) { 
    print parameter1, parameter 
} 

stellen Sie die Parameter, wenn Sie die Funktion definieren. Wenn Sie die Funktion wie folgt aufrufen:

MyFunction('argument1', 'argument2'); 

Sie legen die Werte der Parameter an die Argumente, die Sie übergeben. Die Argumente sind, was Sie in Frage stellen, wenn Sie es anrufen. Hoffnung, die geholfen hat.

0

Eine Variable ist ein Speicherort und ein zugehöriger symbolischer Name (ein Bezeichner), der Daten, einen Wert, enthält.

Ein Parameter ist eine Variable, die an eine Funktion übergeben wird.

Ein Argument sind Daten (ein Wert), die an eine Funktion übergeben werden.

In Funktion übergeben wir zuerst einen Parameter.

In der zweiten und dritten Funktion übergeben wir Argumente.