В чем разница между аргументом и параметром?


718

Говоря о методах в устной форме, я никогда не уверен, использовать ли слово аргумент или параметр или что-то еще. В любом случае другие люди знают, что я имею в виду, но что правильно, и какова история терминов?

Я программист на C #, но мне также интересно, используют ли люди разные термины на разных языках.

Для записи я самоучка без фона в области компьютерных наук. (Пожалуйста, не говорите мне читать Code Complete, потому что я спрашиваю это в интересах других людей, у которых еще нет экземпляра изумительной книги Стива Макконнелла .)

Резюме

По общему мнению, эти термины можно использовать взаимозаменяемо в командной среде. За исключением, возможно, когда вы определяете точную терминологию; тогда вы также можете использовать « формальный аргумент / параметр» и « фактический аргумент / параметр» для устранения неоднозначности.


9
Я использую их взаимозаменяемо ... еще никто не смеялся надо мной ... "эта функция имеет 4 аргумента .. эта функция принимает 4 параметра". звучит так же.
Гишу

54
Можно использовать их взаимозаменяемо, за исключением случаев, когда вы пытаетесь описать, как работают параметры, как передаются аргументы и т. Д. В этот момент точная терминология (которая иногда может быть трудной для выражения) полезна.
Джон Скит

2
Существует как минимум две не закрытые, независимые от языка версии этого вопроса: stackoverflow.com/questions/3176310/… и stackoverflow.com/questions/427653/arguments-or-parameters . Есть также другая версия C # этого вопроса; Я запросил слияние.
Pops

1
Рад, что вы упомянули Стива Макконнелла. Я узнал еще об одном парне, который знает мастерство программирования вместе с Робертом К. Мартином.
RBT

3
Я думаю, независимо от того, находитесь ли вы в формальной среде или нет, вы должны стремиться использовать правильные термины. Я думаю, это довольно просто. Когда вы вызываете метод, вы передаете аргументы. Когда вы определяете метод, вы определяете параметры, которые будут принимать аргументы из вызова метода / функции. Аргумент - независимая переменная, связанная с функцией и определяющая значение функции. Параметр - предел или граница, определяющая объем конкретного процесса или действия.
Jsquaredz

Ответы:


906

Параметр - это переменная в определении метода. Когда вызывается метод, аргументы - это данные, которые вы передаете в параметры метода.

public void MyMethod(string myParam) { }

...

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

196
Аллитерирующая мнемоника, которая может помочь: Аргументы актуальны. ;)
Thofoft

8
В ответе упоминается, что «Параметр является переменной в определении метода», но было бы лучше сказать «объявление метода» [если кто-то проводит различие между «объявлением» и «определением»]
nandan

110
«Вы определяете параметры, и вы приводите аргументы».
Грег М. Krsak

5
параметр => когда мы определяем функцию, аргумент => когда мы вызываем этот метод. (Исправьте меня, если я ошибаюсь.)
Prageeth Godage

7
Параметры - это имена. Аргументы являются ценностями.
Азиз Альто

327

Параметр является переменной в объявлении функции.

Аргумент - это фактическое значение этой переменной, которое передается в функцию.


7
Эти языки обычно ссылаются на список аргументов / параметров, передаваемый методу как *argsили ARGVнет *params:-)
karatedog

6
*paramsбудет именем переменной, которая предназначена для хранения имен параметров (возможно, используется для самоанализа).
trss

6
@karatedog И это полностью соответствует этому различию, на самом деле. Параметры именуются во время объявления, аргументы известны только во время вызова. Синтаксис *argsобъявляет параметр args , значением которого является список (имя и тип, известные во время объявления) аргументов (номер которого известен только во время вызова).
Эмиль Лундберг

72

В теме уже есть запись в Википедии (см. Параметр ), которая определяет и различает термины параметр и аргумент . Короче говоря, параметр является частью сигнатуры функции / процедуры / метода, а аргумент является фактическим значением, предоставленным для параметра во время выполнения и / или на месте вызова.

В статье Википедии также говорится, что эти два термина часто используются как синонимы (особенно при неформальном рассуждении о коде):

Хотя параметры также обычно называют аргументами, аргументы более правильно воспринимаются как фактические значения или ссылки, назначенные переменным параметров, когда подпрограмма вызывается во время выполнения.

Учитывая следующий пример функции в C, которая добавляет два целых числа xи yбудет называться ее параметрами:

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

При использовании сайта вызова add, такого как пример, показанный ниже, 123 и 456 будут называться аргументами вызова.

int result = add(123, 456);

Кроме того, некоторые языковые спецификации (или формальная документация) предпочитают использовать параметр или аргумент исключительно и вместо этого используют прилагательные, такие как формальный и фактический, для устранения неоднозначности между этими двумя падежами. Например, документация C / C ++ часто ссылается на параметры функции как формальные аргументы, а аргументы вызова функции - как фактические аргументы . Пример см. В разделе « Формальные и фактические аргументы » в справочнике по языку Visual C ++ .


+1 за объяснение того, как они обычно используются, а также их формальные определения, а также за упоминание об общем использовании «формальных» и «фактических» аргументов / параметров, чтобы различать их без двусмысленности.
Механическая улитка

Это отличное объяснение, но понять его практически невозможно по сравнению с простотой концепции. Параметр - это то, что принято, аргумент - это то, что называется. Это улица с односторонним движением.
Ihodonald

69

Просто:

  • P ARAMETER → P LACEHOLDER (это означает, что заполнитель принадлежит именованию функции и будет использоваться в теле функции)
  • RGUMENT → CTUAL ЗНАЧЕНИЕ (Это означает , что фактическое значение , которое передается с помощью функции вызова)

3
Хороший хук памяти
Tanckom


29

Параметр является переменной в объявлении функции.

Аргумент - это фактическое значение этой переменной, которое передается в функцию. введите описание изображения здесь


16

Использование терминов параметры и аргументы несколько злоупотребляли программистами и даже авторами. При работе с методами термин параметр используется для идентификации заполнителей в сигнатуре метода, тогда как аргументы термина - это фактические значения, которые вы передаете методу.

MCSD Cerfification Toolkit (Exam 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. Каким [] будет [] этот параметр?

ответы

(А)

  1. в / в / против / с этим параметром
  2. аргумент (ы) ... принять

(В)

  1. и каковы некоторые примеры аргументов
  2. аргумент (ы) ... используется в / в / против / с

Перекрытия

Как вы можете себе представить, после ответа: на разговорном языке эти слова иногда дают идентичные ответы!

Итак, как правило:

  • Обычно, если кто-то хочет получить информацию о параметрах, он хочет узнать больше о типе, имени переменной и т. Д. Он может запутаться, если вы приведете только примеры аргументов.

    • Обычно, если кто-то хочет получить информацию об аргументе, он хочет знать, какое значение вы передали функции или ее параметрам.

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. Термины « вызов по значению» и « вызов по ссылке» относятся к механизму, который используется в процессе подключения. В методе вызова по значению используется только значение аргумента. В этом механизме вызова по значению формальный параметр является локальной переменной, которая инициализируется значением соответствующего аргумента. В механизме вызова по ссылке аргумент является переменной, и используется вся переменная. В механизме вызова по ссылке переменная аргумента заменяется формальным параметром, так что любое изменение, вносимое в формальный параметр, фактически вносится в переменную аргумента.

Источник: Абсолют C ++, Вальтер Савич

Это,

введите описание изображения здесь


6

Условия несколько взаимозаменяемы. Различие, описанное в других ответах, более правильно выражено в терминах формальный параметр для имени, используемого внутри тела функции, и параметра для значения, предоставленного на сайте вызова ( формальный аргумент и аргумент также распространены).

Также обратите внимание, что в математике термин аргумент является гораздо более распространенным, и параметр обычно означает нечто совершенно иное (хотя параметр в параметрическом уравнении по сути является аргументом двух или более функций).


Но опять же термин аргумент также перегружен, по крайней мере, в комплексном анализе.
Механическая улитка

1
У меня есть параметр с утверждением, что они взаимозаменяемы. ;)
Wildcard

5

Аргумент - это экземпляр параметра.


4
Это объяснение, которое мне дал другой программист давным-давно, и я подумал, что оно очень четкое и краткое. Я разместил это здесь по этой причине.
Пол Рихтер

4

Да! Параметры и аргументы имеют разные значения, которые можно легко объяснить следующим образом:

Параметры функции - это имена, перечисленные в определении функции.

Аргументы функции - это реальные значения, передаваемые (и получаемые) функцией.


4

Простые объяснения без кода

«Параметр» - это очень общая, широкая вещь, но «аргумент: это очень конкретная, конкретная вещь. Это лучше всего иллюстрируется повседневными примерами:

Пример 1. Торговые автоматы - деньги - это параметр, $ 2,00 - аргумент

Большинство машин принимают входные данные и возвращают выходные данные. Например, торговый автомат принимает в качестве входных данных: money и возвращает: газированные напитки в качестве выходных данных. В этом конкретном случае он принимает в качестве параметра: деньги.

Какой тогда аргумент? Хорошо, если я положу $ 2,00 в машину, то аргумент будет: $ 2,00 - это очень конкретный вход.

Пример 2: Автомобили - Бензин является параметром

Давайте рассмотрим автомобиль: они принимают бензин (неэтилированный бензин) в качестве входа. Можно сказать, что эти машины принимают параметры типа: бензин. Аргументом будет точный и конкретный вклад, который я вложил в свою машину. Например, в моем случае аргумент будет: 40 литров неэтилированного бензина / бензина.

Пример 3 - Разработка аргументов

Аргумент - это конкретный и конкретный пример ввода. Предположим, моя машина принимает человека за вход и превращает его в человека, который не лжец.

Что тогда является аргументом? Аргументом будет конкретный человек, который фактически помещен в машину. Например, если Колин Пауэлл будет помещен в машину, то аргумент будет Колин Пауэлл.

Таким образом, параметром будет человек как абстрактное понятие, но аргументом всегда будет конкретный человек с конкретным именем, который помещается в машину. Аргумент конкретный и конкретный.

В этом разница. Просто.

Смущенный?

Оставьте комментарий, и я исправлю объяснение.



3

Они оба не имеют большой разницы в использовании в Си, оба термина используются на практике. В основном аргументы часто используются с функциями. Значение, переданное с помощью оператора вызова функции, называется аргументом, а параметром будет переменная, которая копирует значение в определении функции (называемое формальным параметром).

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

В приведенном выше коде num1и num2есть формальные параметры и, aи bфактические аргументы.


3

В руководствах Oracle по Java это различие определяется следующим образом: «Параметры ссылаются на список переменных в объявлении метода. Аргументы - это фактические значения, которые передаются при вызове метода. Когда вы вызываете метод, используемые аргументы должны соответствовать параметрам объявления по типу и порядку. "

Более подробное обсуждение параметров и аргументов: https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html.


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 # в двух словах" (C # 7.0, стр. 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

Я продумал это и понял, что мой предыдущий ответ был неправильным. Вот намного лучшее определение

{ Представь себе коробку яиц: пачка сосисок и горничная } Они представляют собой элементы функции, необходимые для приготовления, называемые: (используйте любое имя: допустим, кулинария - это название моей функции).

Горничная это метод.

(Вы должны __call_ или попросить этот метод приготовить завтрак) (Процесс приготовления завтрака - это функция, которая называется Кулинария ) _

Яйца и колбасы являются параметрами:

(потому что количество яиц и количество колбас, которые вы хотите съесть, __variable_.) _

Ваше решение является аргументом:

Он представляет __Value_ выбранного количества яиц и / или колбас, которые вы готовите ._

{ Мнемоник }

_ "Когда вы позвоните горничной и попросите ее приготовить завтрак, она ___ расскажет вам, сколько яиц и колбас вы должны съесть. Она беспокоится о вашем холестерине" __

(Аргументы - это значения для комбинации параметров, которые вы объявили и решили передать своей функции)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.