2009-01-09 20 views
177

A menudo me encuentro confundido con la forma en que se usan los términos 'argumentos' y 'parámetros'. Parecen ser utilizados indistintamente en el mundo de la programación.¿Argumentos o parámetros?

¿Cuál es la convención correcta para su uso?

+0

Para el registro, una pregunta estrechamente relacionada: http://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter (Que está formulado para ser C# específico, mientras que esto es independiente del idioma, básicamente lo mismo de lo contrario.) – Jonik

+0

@Jonik: No es realmente específico para C# ya que el póster también preguntó sobre los términos en otros lenguajes de programación. La otra pregunta es más antigua y (en mi opinión) tiene algunas respuestas mejores. –

+1

Y si lo vemos como un idioma independiente, entonces realmente es un engaño exacto. –

Respuesta

194

Los parámetros son las cosas definidas por las funciones como entrada, los argumentos son las cosas pasadas como parámetros.

void foo(int bar) { ... } 

foo(baz); 

En este ejemplo, bar es un parámetro para foo. baz es un argumento pasado a foo.

+11

Rinat tiene la definición formal: lo que tienes no está mal, pero tampoco está bien. – avgvstvs

+0

¡Está resuelto ahora! :) – nirjhor

13

Los argumentos son los que tiene cuando invoca una subrutina. Los parámetros son a lo que está accediendo dentro de la subrutina.

argle(foo, bar); 

foo y bar son argumentos.

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

args es un parámetro.

+1

"args es un parámetro". ¿Estaría de acuerdo con 'args' aquí como una elección de nombres? – Liam

+0

@Liam Probablemente no lo hubiera elegido, pero esa es la convención, así que me atengo a esto para evitar confusiones. –

+9

@Liam: Un poco tarde aquí, pero: 'args' es un parámetro, pero su contenido son los argumentos que se pasaron en la línea de comando para iniciar el programa. Llamarlo 'parameters' sería incorrecto porque aunque la variable en sí misma (en la firma del método) es un parámetro, el contenido de esa matriz (runtime) no son parámetros. – ColinD

4

Aunque Wikipedia no es una fuente autorizada, hace un trabajo decente de explaining the terms.

supongo que se podría decir que los parámetros son argumentos a lo que las clases son a instancias de objetos ...

188

Un Parámetro es una variable en la declaración de una función:

functionName(parameter) { 
    // do something 
} 


Un Argumento es el valor real de esta variable que se pasa a la función:

functionName(argument); 
+30

Esta es la explicación ** formal ** y ** correcta **. – avgvstvs

+6

Ah, entonces un _parámetro_ es un _formal argumento_ y un _argumento_ es un _actual argumento_. ;-) –

5

Hay una buena sección en parameter Artículo de Wikipedia sobre este tema.

En pocas palabras - parámetro es el nombre formal definida por la función y argumento es el valor real (por ejemplo 5) o cosa (como variable) pasó a la función.

26

Para user1515422, un ejemplo muy concreto que muestra la diferencia entre los parámetros y argumentos:

considerar esta función:

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

Tiene dos parámetros: numerator y denominator, SET cuando se define. Una vez definidos, los parámetros de una función son fijos y no cambiarán.

Consideremos ahora una invocación de esa función:

int result = divide(8, 4); 

En este caso, y 84 son los argumentos pasados ​​a la función. El parámetro numerator se establece en el valor del argumento 8, y denominator se establece en 4. Luego la función se evalúa con los parámetros establecidos en el valor de los argumentos. Se puede pensar en el proceso como equivalente a:

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

La diferencia entre un parámetro y un argumento es similar a la diferencia entre una variable y su valor. Si escribo int x = 5;, la variable es x y el valor es 5. La confusión puede surgir porque es natural decir cosas como "x es cinco", como abreviación de "La variable x tiene el valor 5", pero es de esperar que la distinción sea clara.

¿Eso aclara las cosas?

1

Simplemente no hay grandes diferencias. Si profundizamos en esto, podemos identificar la diferencia. Principalmente sabemos que Argumento/Parámetro/firma son todos iguales.

Básicamente Parámetro define el tipo de datos que estamos passing.Where como el argumento define los datos reales/variable que estamos de paso.

Parámetro Ejemplo: -

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

Argumento Ejemplo: -

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

En la mayoría de los casos, un procedimiento necesita un poco de información acerca de las circunstancias en las que se le han pedido. Un procedimiento que realiza tareas repetidas o compartidas usa información diferente para cada llamada. Esta información consiste en variables, constantes y expresiones que pasa al procedimiento cuando lo llama.

Para comunicar esta información al procedimiento, el procedimiento define un parámetro, y el código de llamada pasa un argumento a ese parámetro. Puedes pensar en el parámetro como un lugar de estacionamiento y el argumento como un automóvil. Así como diferentes automóviles pueden estacionarse en el lugar de estacionamiento en diferentes momentos, el código de llamada puede pasar un argumento diferente al mismo parámetro cada vez que llama al procedimiento.

Parámetros

Un parámetro representa un valor que el procedimiento espera que usted pueda pasar cuando se llama a ella. La declaración del procedimiento define sus parámetros.

Cuando se define una función o procedimiento Sub, se especifica una lista de parámetros entre paréntesis inmediatamente después del nombre del procedimiento. Para cada parámetro, especifique un nombre, un tipo de datos y un mecanismo de aprobación (ByVal o ByRef). También puede indicar que un parámetro es opcional, lo que significa que el código de llamada no tiene que pasarle un valor.

El nombre de cada parámetro sirve como una variable local dentro del procedimiento. Utiliza el nombre del parámetro de la misma manera que usas cualquier otra variable.

Argumentos

Un argumento representa el valor que se pasa a un parámetro de procedimiento cuando se llama al procedimiento. El código de llamada suministra los argumentos cuando llama al procedimiento.

Cuando se llama a una función o procedimiento Sub, que incluyen una lista de argumentos entre paréntesis inmediatamente después del nombre del procedimiento. Cada argumento corresponde al parámetro en la misma posición en la lista.

En contraste con la definición del parámetro, los argumentos no tienen nombres. Cada argumento es una expresión, que puede contener cero o más variables, constantes y literales. El tipo de datos de la expresión evaluada normalmente debe coincidir con el tipo de datos definido para el parámetro correspondiente, y en cualquier caso debe ser convertible al tipo de parámetro.

0

De hecho, tanto el parámetro como el argumento son diferentes tipos de parámetros. Esos son

1) parámetros formales - variables aparecen en la función/definiciones de subrutina

para, por ejemplo. (En Java)

public void foo(Integer integer, String... s2) 

Aquí, tanto entero y s2 son parámetros formales o parámetros términos generales.

2) parámetros reales o los argumentos - variables aparecen en subrutinas mientras que llama la

subrutina

ya definido para, por ejemplo. (En Java) Supongamos que si la función "foo" reside en el objeto "testObject",

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

Así variables en la definición de función se denominan parámetros formales o, simplemente, parámetros y variables mientras que los métodos de las tarjetas están llamados como parámetros actuales o argumentos. Espero que ayude.

0

Piénsalo como el álgebra básica. X es el parámetro que debe completar y el número que coloca dentro es el argumento. Entonces, si tienes una ecuación como X + 2, X es tu parámetro, y cualquier número que cambies para X se conoce como los argumentos. Entonces, si usa esa ecuación, suplementa 1 para x, obtiene 1 + 2. Eso significa que 1 es un argumento, suministrado al parámetro de X.

Del mismo modo, si tiene una función como dosomething ("Esto"), su definición sería dos cosas (string parametername), pero "This" sería el argumento real que se está suministrando al parámetro, aquí llamado nombreparámetro.

De la manera más simple de verlo, el parámetro es lo que el argumento rellena, y el argumento puede ser cualquier cantidad de cosas permitidas por ese parámetro.

Por lo tanto, es una relación muchos a uno entre Parámetros y argumentos, ya que puede tener un parámetro que puede tener muchos argumentos válidos, como nuestra ecuación X + 1 anterior. X puede ser cualquier número conocido, y todos son válidos.

2

Cuando se define una función como:

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

se ajustan los parámetros cuando se define la función. Cuando se llama a la función como esta:

MyFunction('argument1', 'argument2'); 

de establecer los valores de los parámetros a los argumentos que ha pasado. Los argumentos son lo que pones en la pregunta cuando la llamas. Espero que haya ayudado.

0

Una variable es una ubicación de almacenamiento y un nombre simbólico asociado (un identificador) que contiene datos, un valor.

Un parámetro es una variable que se pasa a una función.

Un argumento es un dato (un valor) pasado a una función.

$variable = 'data/value'; 

function first($variable){ ... } 

function second('data/value'){ ... } 
function third(16){ ... } 

En la función primero estamos pasando un parámetro.

En la función segunda y tercera estamos pasando argumentos.

Cuestiones relacionadas