Was ist der Unterschied zwischen einem Argument und einem Parameter?


718

Wenn ich verbal über Methoden spreche, bin ich mir nie sicher, ob ich das Wort Argument oder Parameter oder etwas anderes verwenden soll. So oder so wissen die anderen Leute, was ich meine, aber was ist richtig und wie ist die Geschichte der Begriffe?

Ich bin ein C # -Programmierer, aber ich frage mich auch, ob Leute unterschiedliche Begriffe in verschiedenen Sprachen verwenden.

Ich bin Autodidakt ohne Hintergrund in Informatik. (Bitte sagen Sie mir nicht, dass ich Code Complete lesen soll, da ich dies zum Nutzen anderer Leute bitte, die noch keine Kopie von Steve McConnells wunderbarem Buch haben.)

Zusammenfassung

Der allgemeine Konsens scheint zu sein, dass es in Ordnung ist, diese Begriffe in einer Teamumgebung austauschbar zu verwenden. Außer vielleicht, wenn Sie die genaue Terminologie definieren; dann können Sie auch " formales Argument / Parameter" und " tatsächliches Argument / Parameter" verwenden, um zu unterscheiden.


9
Ich benutze sie austauschbar. Noch hat mich niemand ausgelacht. 'Diese Funktion hat 4 Argumente. Diese Funktion akzeptiert 4 Parameter.' klingt gleich.
Gishu

54
Es ist in Ordnung, sie austauschbar zu verwenden, es sei denn, Sie möchten beschreiben, wie Parameter funktionieren und wie Argumente übergeben werden usw. An diesem Punkt ist die genaue Terminologie (die manchmal schmerzhaft auszudrücken sein kann) nützlich.
Jon Skeet

2
Es gibt mindestens zwei nicht geschlossene, sprachunabhängige Versionen dieser Frage: stackoverflow.com/questions/3176310/… und stackoverflow.com/questions/427653/arguments-or-parameters . Es gibt auch eine andere C # -Version dieser Frage. Ich habe eine Zusammenführung beantragt.
Pops

1
Ich bin froh, dass Sie Steve McConnell erwähnt haben. Ich habe einen weiteren Mann kennengelernt, der sich mit Software-Handwerkskunst auskennt, zusammen mit Robert C. Martin.
RBT

3
Ich denke, unabhängig davon, ob Sie sich in einer formalen Umgebung befinden oder nicht, sollten Sie sich bemühen, die richtigen Begriffe zu verwenden. Ich finde es ziemlich einfach. Wenn Sie eine Methode aufrufen, übergeben Sie Argumente. Wenn Sie die Methode definieren, definieren Sie die Parameter, die die Argumente aus dem Methoden- / Funktionsaufruf übernehmen. Argument - eine unabhängige Variable, die einer Funktion zugeordnet ist und den Wert der Funktion bestimmt. Parameter - Eine Grenze, die den Umfang eines bestimmten Prozesses oder einer bestimmten Aktivität definiert.
Jsquaredz

Antworten:


906

Ein Parameter ist eine Variable in einer Methodendefinition. Wenn eine Methode aufgerufen wird, sind die Argumente die Daten, die Sie an die Parameter der Methode übergeben.

public void MyMethod(string myParam) { }

...

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

196
Eine alliterierende Mnemonik, die helfen kann: Argumente sind aktuell. ;)
thSoft

8
In der Antwort wird erwähnt, dass "Parameter eine Variable in einer Methodendefinition ist", aber es könnte besser sein, "Methodendeklaration" zu sagen [wenn jemand zwischen "Deklaration" und "Definition" unterscheidet]
nandan

110
"Sie definieren Parameter und machen Argumente."
Greg M. Krsak

5
Parameter => wenn wir die Funktion definieren, Argument => wenn wir diese Methode aufrufen. (Korrigieren Sie mich, wenn ich falsch bin.)
Prageeth Godage

7
Parameter sind die Namen. Argumente sind die Werte.
Aziz Alto

327

Parameter ist in der Funktionsdeklaration variabel.

Argument ist der tatsächliche Wert dieser Variablen, der an function übergeben wird.


7
Diese Sprachen beziehen sich normalerweise auf die Argument- / Parameterliste, die als *argsoder ARGVnicht an eine Methode übergeben wurde *params:-)
Karatedog

6
*paramswäre der Name einer Variablen, die die Parameternamen enthalten soll (möglicherweise zur Selbstbeobachtung verwendet).
trss

6
@karatedog Und das stimmt eigentlich ganz mit dieser Unterscheidung überein. Parameter werden zur Deklarationszeit benannt, Argumente sind nur zur Aufrufzeit bekannt. Die Syntax *argsdeklariert einen Parameter, args dessen Wert eine Liste (Name und Typ zur Deklarationszeit bekannt) der Argumente ist (deren Nummer nur zur Aufrufzeit bekannt ist).
Emil Lundberg

72

Zu diesem Thema gibt es bereits einen Wikipedia-Eintrag (siehe Parameter ), der die Begriffe Parameter und Argument definiert und unterscheidet . Kurz gesagt, ein Parameter ist Teil der Funktions- / Prozedur- / Methodensignatur und ein Argument ist der tatsächliche Wert, der zur Laufzeit und / oder am Aufrufort für den Parameter angegeben wird.

Der Wikipedia-Artikel besagt auch, dass die beiden Begriffe häufig synonym verwendet werden (insbesondere, wenn informell über Code nachgedacht wird):

Obwohl Parameter üblicherweise auch als Argumente bezeichnet werden, werden Argumente besser als die tatsächlichen Werte oder Referenzen angesehen, die den Parametervariablen zugewiesen werden, wenn das Unterprogramm zur Laufzeit aufgerufen wird.

Angesichts der folgenden Beispielfunktion in C, die zwei Ganzzahlen hinzufügt xund yals ihre Parameter bezeichnet wird:

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

An einer Anrufstelle add, die wie das unten gezeigte Beispiel verwendet wird, werden 123 und 456 als Argumente des Anrufs bezeichnet.

int result = add(123, 456);

Einige Sprachspezifikationen (oder formale Dokumentationen) verwenden ausschließlich Parameter oder Argumente und verwenden stattdessen Adjektive wie formal und actual , um zwischen den beiden Fällen zu unterscheiden. Zum Beispiel, C / C ++ Dokumentation bezieht sich häufig auf Funktionsparameter als formale Argumente und Funktionsaufruf Argumente als tatsächliche Argumente . Ein Beispiel finden Sie unter „ Formale und tatsächliche Argumente “ in der Visual C ++ - Sprachreferenz .


+1 zur Erläuterung ihrer allgemeinen Verwendung sowie ihrer formalen Definitionen und zur Erwähnung der allgemeinen Verwendung von "formalen" und "tatsächlichen" Argumenten / Parametern, um sie eindeutig zu unterscheiden.
Mechanische Schnecke

Dies ist eine großartige Erklärung, aber im Vergleich zur Einfachheit des Konzepts kaum zu verstehen. Ein Parameter wird akzeptiert, ein Argument wird aufgerufen. Es ist eine Einbahnstraße.
Ihodonald

69

Einfach:

  • P ARAMETER → P LACEHOLDER (Dies bedeutet, dass ein Platzhalter zur Funktionsbezeichnung gehört und im Funktionskörper verwendet wird.)
  • A RGUMENT → A CTUAL VALUE (Dies bedeutet einen tatsächlichen Wert, der vom Funktionsaufruf übergeben wird.)

3
Netter Erinnerungshaken
Tanckom


29

Parameter ist in der Funktionsdeklaration variabel.

Argument ist der tatsächliche Wert dieser Variablen, der an function übergeben wird. Geben Sie hier die Bildbeschreibung ein


16

Die Verwendung der Begriffe Parameter und Argumente wurde von Programmierern und sogar Autoren etwas missbraucht. Wenn es mit Methoden handelt, der Begriff Parameter wird verwendet , um die Platzhalter in der Methodensignatur zu identifizieren, während der Begriff Argumente die tatsächlichen Werte sind , dass man in an die Methode übergeben.

MCSD Cerfification Toolkit (Prüfung 70-483) Programmierung in C # , 1. Auflage, Wrox, 2013

Reales Szenario

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

Beim Bearbeiten bin ich oft davon abgeschreckt, wie die Leute vergessen: Struktursprachen basieren auf natürlichen Sprachen.

Auf Englisch

Ein "Parameter" ist ein Platzhalter. Sie legen das Antwortformat in gesprochener Sprache fest. Per Definition ist es Teilnehmer des Anrufs, wodurch die Antwort begrenzt wird.

Ein "Argument" ist eine Position, die berücksichtigt wird. Sie argumentieren Ihre Meinung: Sie betrachten ein Argument.

Hauptunterschied

Die thematische Rolle eines Arguments ist Agent. Die thematische Rolle des Parameters ist der Empfänger.

Interaktionen

Stellen Sie sich das Argument als männlichen Teil vor und machen Sie den Parameter zum weiblichen Teil. Das Argument geht in den Parameter.

Verwendungszweck

In Definitionen wird normalerweise ein Parameter verwendet. Ein Argument wird normalerweise in Aufrufen verwendet.

Fragen

Beenden Sie den Satz, um ihn weniger dissonant zu machen.

(A) Apropos Definition:

  1. Welches Argument wird verwendet []?
  2. Was [] wird dieser Parameter []?

(B) Apropos Anrufung:

  1. Welchen Parameter werden Sie verwenden, []?
  2. Was [] wird [] dieser Parameter sein?

Antworten

(EIN)

  1. ein / in / gegen / mit diesem Parameter
  2. Argument (e) ... nehmen

(B)

  1. und was sind einige Beispielargumente
  2. Argument (e) ... verwendet auf / in / gegen / mit

Überlappungen

Wie Sie sich vorstellen können, führen diese Wörter nach der Antwort in der gesprochenen Sprache manchmal zu identischen Antworten!

Also in der Regel:

  • Wenn jemand Parameterinformationen möchte, möchte er normalerweise mehr über den Typ, den Variablennamen usw. erfahren. Sie können verwirrt werden, wenn Sie nur Beispielargumente angeben.

    • Wenn jemand Argumentinformationen möchte, möchte er normalerweise wissen, welchen Wert Sie an eine Funktion oder deren Parameter übergeben haben.

8

Dieses Beispiel könnte helfen.

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

Denken Sie immer daran: - Argumente werden übergeben, während Parameter empfangen werden.


8

Die Parameter einer Funktion / Methode beschreiben Ihnen die Werte, die sie zur Berechnung ihres Ergebnisses verwendet.

Die Argumente einer Funktion sind die Werte, die diesen Parametern während eines bestimmten Aufrufs der Funktion / Methode zugewiesen wurden.


7

Oder es ist noch einfacher, sich so zu erinnern, wenn optionale Argumente für eine Methode vorliegen:

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

}

parameterist der Parameter, sein Wert, "argument"ist das Argument :)


7

Angenommen, Sie sind eine Fluggesellschaft. Sie bauen ein Flugzeug. Sie installieren Sitze darin. Dann füllen Sie das Flugzeug mit Passagieren und schicken es irgendwohin. Die Passagiere (oder besser gesagt eine räumlich-zeitlich veränderte Version davon) steigen aus. Am nächsten Tag verwenden Sie dasselbe Flugzeug und dieselben Sitze wieder, diesmal jedoch mit unterschiedlichen Passagieren.

Das Flugzeug ist Ihre Funktion.

Die Parameter sind die Sitze.

Die Argumente sind die Passagiere, die auf diesen Sitzen sitzen.


7

Parameter und Argumente

All die verschiedenen Begriffe, die mit Parametern und Argumenten zu tun haben, können verwirrend sein. Wenn Sie jedoch einige einfache Punkte beachten, können Sie mit diesen Begriffen problemlos umgehen.

  1. Die formalen Parameter für eine Funktion sind in der Funktionsdeklaration aufgeführt und werden im Hauptteil der Funktionsdefinition verwendet. Ein formaler Parameter (jeglicher Art) ist eine Art Leerzeichen oder Platzhalter, der beim Aufruf der Funktion mit etwas ausgefüllt wird.
  2. Ein Argument wird zum Ausfüllen eines formalen Parameters verwendet. Wenn Sie einen Funktionsaufruf aufschreiben, werden die Argumente in Klammern nach dem Funktionsnamen aufgeführt. Wenn der Funktionsaufruf ausgeführt wird, werden die Argumente für die formalen Parameter eingefügt.
  3. Die Begriffe Call-by-Value und Call-by-Reference beziehen sich auf den Mechanismus, der beim Einstecken verwendet wird. Bei der Call-by-Value-Methode wird nur der Wert des Arguments verwendet. Bei diesem Call-by-Value-Mechanismus ist der formale Parameter eine lokale Variable, die mit dem Wert des entsprechenden Arguments initialisiert wird. Im Call-by-Reference-Mechanismus ist das Argument eine Variable und die gesamte Variable wird verwendet. Im Call-by-Reference-Mechanismus wird der formale Parameter durch die Argumentvariable ersetzt, sodass jede Änderung, die am formalen Parameter vorgenommen wird, tatsächlich an der Argumentvariablen vorgenommen wird.

Quelle: Absolutes C ++, Walter Savitch

Das ist,

Geben Sie hier die Bildbeschreibung ein


6

Die Begriffe sind etwas austauschbar. Die in anderen Antworten beschriebene Unterscheidung wird besser ausgedrückt mit den Begriffen formaler Parameter für den Namen, der im Hauptteil der Funktion verwendet wird, und Parameter für den an der Aufrufstelle angegebenen Wert ( formales Argument und Argument sind ebenfalls üblich).

Beachten Sie auch, dass in der Mathematik der Begriff Argument weitaus häufiger vorkommt und Parameter normalerweise etwas ganz anderes bedeuten (obwohl der Parameter in einer parametrischen Gleichung im Wesentlichen das Argument für zwei oder mehr Funktionen ist).


Andererseits ist der Begriff Argument zumindest in der komplexen Analyse auch überladen.
Mechanische Schnecke

1
Ich habe einen Parameter mit der Behauptung, dass sie austauschbar sind. ;)
Wildcard

5

Ein Argument ist eine Instanziierung eines Parameters.


4
Dies ist die Erklärung, die mir vor langer Zeit von einem anderen Programmierer gegeben wurde, und ich fand sie sehr klar und prägnant. Ich habe es aus diesem Grund hier gepostet.
Paul Richter

4

Ja! Parameter und Argumente haben unterschiedliche Bedeutungen, die leicht wie folgt erklärt werden können:

Funktionsparameter sind die Namen in der Funktionsdefinition aufgelistet.

Funktionsargumente sind die wirklichen Werte übergeben (und empfangen von) die Funktion.


4

Einfache Erklärungen ohne Code

Ein "Parameter" ist eine sehr allgemeine, breite Sache, aber ein "Argument: ist eine sehr spezifische, konkrete Sache. Dies lässt sich am besten anhand alltäglicher Beispiele veranschaulichen:

Beispiel 1: Verkaufsautomaten - Geld ist der Parameter, $ 2.00 ist das Argument

Die meisten Maschinen nehmen eine Eingabe entgegen und geben eine Ausgabe zurück. Zum Beispiel nimmt ein Verkaufsautomat als Eingabe: Geld und gibt als Ausgabe kohlensäurehaltige Getränke zurück. In diesem speziellen Fall akzeptiert es als Parameter: Geld.

Was ist dann das Argument? Wenn ich $ 2,00 in die Maschine stecke, lautet das Argument: $ 2,00 - es ist die sehr spezifische Eingabe, die verwendet wird.

Beispiel 2: Autos - Benzin ist der Parameter

Betrachten wir ein Auto: Sie akzeptieren Benzin (bleifreies Benzin) als Eingabe. Man kann sagen, dass diese Maschinen Parameter vom Typ Benzin akzeptieren . Das Argument wäre der genaue und konkrete Input, den ich in mein Auto gesteckt habe. zB In meinem Fall wäre das Argument: 40 Liter bleifreies Benzin.

Beispiel 3 - Ausarbeitung von Argumenten

Ein Argument ist ein bestimmtes und spezifisches Beispiel für eine Eingabe. Angenommen, meine Maschine nimmt eine Person als Eingabe und verwandelt sie in jemanden, der kein Lügner ist.

Was ist dann ein Argument? Das Argument wird die bestimmte Person sein, die tatsächlich in die Maschine eingesetzt wird. Wenn beispielsweise Colin Powell in die Maschine eingesetzt wird, lautet das Argument Colin Powell.

Der Parameter wäre also eine Person als abstraktes Konzept, aber das Argument wäre immer eine bestimmte Person mit einem bestimmten Namen , die in die Maschine eingegeben wird. Das Argument ist spezifisch und konkret.

Das ist der Unterschied. Einfach.

Verwirrt?

Schreiben Sie einen Kommentar und ich werde die Erklärung korrigieren.



3

Beide haben keinen großen Unterschied in der Verwendung in C, beide Begriffe werden in der Praxis verwendet. Meistens werden Argumente mit Funktionen verwendet. Der mit der Funktionsaufrufanweisung übergebene Wert wird als Argument bezeichnet. Der Parameter ist die Variable, die den Wert in der Funktionsdefinition kopiert (als formaler Parameter bezeichnet).

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

Im obigen Code sind num1und num2formale Parameter und aund bsind tatsächliche Argumente.


3

In den Java-Tutorials von Oracle wird diese Unterscheidung folgendermaßen definiert: "Parameter beziehen sich auf die Liste der Variablen in einer Methodendeklaration. Argumente sind die tatsächlichen Werte, die beim Aufrufen der Methode übergeben werden. Wenn Sie eine Methode aufrufen, müssen die verwendeten Argumente mit den Parametern der Deklaration übereinstimmen in Art und Reihenfolge. "

Eine detailliertere Diskussion der Parameter und Argumente: https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html


3

Logischerweise sprechen wir tatsächlich über dasselbe. Aber ich denke, eine einfache Metapher wäre hilfreich, um dieses Dilemma zu lösen.

Wenn die Metaphern als verschiedene Verbindungspunkte bezeichnet werden können, können wir sie mit Steckpunkten an einer Wand gleichsetzen. In diesem Fall können wir Parameter und Argumente wie folgt betrachten:

Parameter sind die Buchsen des Steckpunkts, die verschiedene Formen annehmen können. Aber nur bestimmte Arten von Steckern passen zu ihnen.
Argumente sind die tatsächlichen Stecker, die in die Steckerpunkte / Buchsen eingesteckt werden, um bestimmte Geräte zu aktivieren.


3

Parameter ist eine Variable in einer Funktionsdefinition.
Argument ist ein Wert von Parameter

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

Im Allgemeinen werden die Begriffe Parameter und Argument synonym verwendet, um Informationen zu bezeichnen, die an eine Funktion übergeben werden.

Aus Sicht einer Funktion:

  • Ein Parameter ist die Variable, die in der Funktionsdefinition in Klammern aufgeführt ist.
  • Ein Argument ist der Wert, der beim Aufruf an die Funktion gesendet wird.

2

Wenn wir die Methode (Funktion) in Java erstellen, ist die Methode wie folgt ..

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

In der Klammer sind dies die Parameter, und wenn wir die Methode (Funktion) aufrufen, übergeben wir den Wert dieses Parameters, die als Argumente bezeichnet werden.


2

Nach Josephs Alabahari-Buch "C # in a Nutshell" (C # 7.0, S. 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
}

In einigen menschlichen Sprachen (afaik Italienisch, Russisch) werden häufig Synonyme für diese Begriffe verwendet.

  • Parameter = formaler Parameter
  • Argument = Aktualparameter

An meiner Universität verwenden Professoren beide Arten von Namen.


0

Parameter sind die Variablen, die von einer Funktion empfangen werden. Daher sind sie in der Funktionsdeklaration sichtbar. Sie enthalten den Variablennamen mit ihrem Datentyp. Argumente sind Istwerte, die an eine andere Funktion übergeben werden. Deshalb können wir sie im Funktionsaufruf sehen. Sie sind nur Werte ohne Datentyp


0

Die formalen Parameter für eine Funktion sind in der Funktionsdeklaration aufgeführt und werden im Hauptteil der Funktionsdefinition verwendet. Ein formaler Parameter (jeglicher Art) ist eine Art Leerzeichen oder Platzhalter, der beim Aufruf der Funktion mit etwas ausgefüllt wird.

Ein Argument wird zum Ausfüllen eines formalen Parameters verwendet. Wenn Sie einen Funktionsaufruf aufschreiben, werden die Argumente in Klammern nach dem Funktionsnamen aufgeführt. Wenn der Funktionsaufruf ausgeführt wird, werden die Argumente für die formalen Parameter eingefügt.

Die Begriffe Call-by-Value und Call-by-Reference beziehen sich auf den Mechanismus, der beim Einstecken verwendet wird. Bei der Call-by-Value-Methode wird nur der Wert des Arguments verwendet. Bei diesem Call-by-Value-Mechanismus ist der formale Parameter eine lokale Variable, die mit dem Wert des entsprechenden Arguments initialisiert wird. Im Call-by-Reference-Mechanismus ist das Argument eine Variable und die gesamte Variable wird verwendet. Im Call-by-Reference-Mechanismus wird der formale Parameter durch die Argumentvariable ersetzt, sodass jede Änderung, die am formalen Parameter vorgenommen wird, tatsächlich an der Argumentvariablen vorgenommen wird.


0

Parameter sind Variablen, die zum Speichern der Daten verwendet werden, die an eine Funktion übergeben werden, die von der Funktion verwendet werden soll. Argumente sind die tatsächlichen Daten, die beim Aufrufen an eine Funktion übergeben werden:

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

Ich dachte darüber nach und stellte fest, dass meine vorherige Antwort falsch war. Hier ist eine viel bessere Definition

{ Stellen Sie sich einen Eierkarton vor: Eine Packung Wurst-Links: Und ein Dienstmädchen } Diese stellen Elemente einer Funktion dar, die für die Zubereitung benötigt wird: (Verwenden Sie einen beliebigen Namen: Nehmen wir an, Kochen ist der Name meiner Funktion).

Ein Dienstmädchen ist eine Methode.

(Sie müssen __call_ oder diese Methode bitten , um das Frühstück zuzubereiten ) (Das Zubereiten des Frühstücks ist eine Funktion namens Kochen ) _

Eier und Würstchen sind Parameter:

(weil die Anzahl der Eier und die Anzahl der Würste, die Sie essen möchten, __variable_ ist.) _

Ihre Entscheidung ist ein Argument:

Es repräsentiert den __Wert_ der gewählten Anzahl von Eiern und / oder Würstchen, die Sie kochen ._

{ Mnemonik }

_ "Wenn Sie die Magd anrufen und sie bitten, Frühstück zu machen, __argues_ sie mit Ihnen darüber, wie viele Eier und Würste Sie essen sollten. Sie ist besorgt über Ihr Cholesterin" __

(Argumente sind also die Werte für die Kombination von Parametern, die Sie deklariert und an Ihre Funktion übergeben haben.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.