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

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

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

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

резюме

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

30 ответов


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

public void MyMethod(string myParam) { }

...

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

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

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


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

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

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

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

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

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

int result = add(123, 456);

кроме того, некоторые языковые спецификации (или официальная документация) предпочитают использовать параметр или аргумент исключительно и использовать такие определения, как официальные и фактический вместо этого, чтобы устранить двусмысленность между двумя случаями. Например, документация на C / C++ часто ссылается на функцию параметры as формальные аргументы и вызов функции аргументы as фактические аргументы. Пример см. В разделе"формальные и фактические аргументы" в Справочник По Языку Visual C++.


параметр нужно заполнить при вызове функции. Что вы вкладываете в это аргумент.

просто установить: аргумент входит в параметр, аргумент является значением параметра.

немного больше информации о: http://en.wikipedia.org/wiki/Parameter_(computer_science)#Parameters_and_arguments


просто:

  • PARAMETER → PLACEHOLDER (это означает, что заполнитель принадлежит именованию функции и используется в теле функции)
  • ARGUMENT → ACTUAL значение (это означает фактическое значение, которое передается вызовом функции)

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

MCSD Cerfification Toolkit (экзамен 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);

в редактировании я часто отталкиваюсь от того, как люди забывают: языки структуры основаны на естественных языках.

На Английском Языке

параметр "" - это. Они задают формат ответа на разговорном языке. По определению, это участник вызова, ограничивающий ответ.

"аргумент" - это позиция, которая рассматривается. Вы оспариваете свое мнение, вы рассматриваете аргумент.

главное отличие

тематическая роль аргумент агента. Тематическая роль параметра-получатель.

взаимодействие

думайте о аргументе как о мужской части, делая параметр женской частью. Аргумент переходит в параметр.

использование

параметр обычно используется в определениях. Аргумент обычно используется в вычислении.

вопросы

закончите предложение, чтобы сделать его меньше диссонирующий.

(A) говоря об определении:

  1. какой аргумент будет использован []?
  2. что [] будет этот параметр []?

(B) говоря о призыве:

  1. какой параметр вы будете использовать, []?
  2. каким [] будет [] этот параметр?

ответы

(A)

  1. on/in/against / с этим параметром
  2. аргумент(s) ... взять

(B)

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

совпадения

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

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

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

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

на параметры функции / метода опишите вам значения, которые он использует для вычисления своего результата.

на аргументы of a-значения, присвоенные этим параметрам во время определенного вызова функции/метода.


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

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

}

parameter - параметр, его значение,"argument" - это аргумент :)


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

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


этот пример может помочь.

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

допустим, вы авиакомпания. Вы строите самолет. Вы устанавливаете в нем сиденья. Затем вы заполняете самолет пассажирами и отправляете его куда-то. Пассажиры (вернее, их пространственно-временная версия) высаживаются. На следующий день вы повторно используете тот же самолет и те же места, но с разными пассажирами на этот раз.

плоскость-это ваша функция.

параметры сиденья.

аргументы-это пассажиры, которые идут в те места.


параметры и аргументы

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

  1. The формальных параметров функции перечислены в объявлении функции и используемые в теле определения функции. Ля формальный параметр (любого рода) является своего рода пустым или заполнитель, который заполняется чем-то, когда вызывается функция.
  2. An аргумент - это то, что используется для заполнения формального параметра. Когда вы записываете вызов функции, аргументы перечислены в скобки после имени функции. Когда вызов функции выполняется, аргументы подключаются для формальных параметров.
  3. условия call-by-value и вызов по ссылке см. механизм это используется в процессе подключения. В методе call-by-value используется только значение аргумента. В этом call-by-value механизм, формальный параметр является локальной переменной, которая присваивается значение соответствующего аргумента. В механизм call-by-reference аргумент является переменной и используется вся переменная. В механизме call-by-reference переменная аргумента заменяется формальным параметром таким образом, что любые внесенные изменения к формальному параметру фактически делается переменная аргумента.

Источник: Абсолютный C++, Walter Savitch

то есть

enter image description here


всегда помните, что:- Аргументы передаются при получении параметров.


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


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

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

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


или даже проще...

Аргументы !

параметры отсюда !


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

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 фактические аргументы.


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

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


Хорошо, давайте будем реальными: для всех намерений и целей они практически одно и то же..........хорошо, но для педантов может быть техническая разница.

"параметр" - это очень общая широкая вещь, но argumet-очень конкретная вещь. Отлично, спасибо , это очень полезно. хммм: возможно, стоит привести пример.

Простое Объяснение

возьмем пример: у меня есть машина. Вот как это работает: я вкладываю вещи в машина на одном конце, и на другом конце, новый "продукт" приходит из машины. Что входит в эту машину? Что угодно. Что выходит? Ну, утонченная версия того, что происходит. например, я могу положить муку и сахар в один конец этой машины, а из другого выходит: торт. вы поняли идею.

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

пример

Что же такое аргумент? Аргумент-это конкретный и конкретный пример того, что помещается в машину. Предположим, моя машина принимает людей в качестве входных данных (люди были бы параметром этой машины) и предположим, что эта машина превращает этих людей в людей, которые не являются злыми людьми (какая замечательная машина!).Что же тогда является аргументом? Аргументом будет конкретный человек, который фактически помещен в машина. например, если Джордж Буш помещен в машину, то аргументом будет Джордж Буш. Если бы Ким Кардиашян была там, она бы тоже стала спорить. Таким образом, параметром будут люди как абстрактное понятие, но аргументом всегда будет конкретный человек с определенным именем, который помещается в машину.

еще один пример

например, метод (т. е. конкретная машина, которая превращает входы в выходы) могут принимать в качестве параметра число. Предположим, что целое число 5 "передается" функции (т. е. предположим, что вы помещаете число 5 в машину). В этом случае аргументом будет целое число "5", а "параметр", принятый этим методом, будет иметь тип integer.

вот в чем разница. Простой.

надеюсь, это поможет. Если вы смущены, просто прокомментируйте, и я попытаюсь это исправить.


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

Если метафоры можно назвать различными точками соединения, мы можем приравнять их к точкам подключения на стене. В этом случае параметры и аргументы можно рассматривать следующим образом;

параметры гнезда штепсельн-пункта который может принять различные различные формы. Но только определенные типы штепсельных вилок подогнать их.
Аргументы будут фактические штепсельные вилки которые были бы заткнуты в пункты штепсельной вилки/гнезда для того чтобы активировать некоторые оборудования.


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

аргумент - фактическое значение этой переменной, которое передается функции. enter image description here


когда мы создаем метод (функцию) в Java, такой метод..

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

в скобках это параметры, и когда мы вызываем метод (функцию), мы передаем значение этого параметра, которое называется аргументами.


согласно книге Иосифа Алабахари "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
}

в некоторых человеческих языках (афаик итальянский, русский) синонимы широко используются для этих терминов.

  • параметр = формальный параметр
  • аргумент = фактический параметр

в моем университете профессора используют оба вида имен.


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


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

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

условия call-by-value и вызов по ссылке обратитесь к механизму, который используется в процессе подключения. В методе call-by-value используется только значение аргумента. В этом механизме call-by-value формальным параметром является локальная переменная, которая инициализируется значением соответствующего аргумента. В механизме call-by-reference аргумент является используется переменная и вся переменная. В механизме вызова по ссылке переменная аргумента заменяется формальным параметром, так что любое изменение, внесенное в формальный параметр, фактически вносится в переменную аргумента.


параметры являются переменными, которые используются для хранения данных, переданных в функцию для использования функции. Аргументы являются фактическими данными, которые передаются в функцию при ее вызове:

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

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

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

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

( необходимо __звоните_ или задать этот метод сделать завтрак) (акт приготовления завтрака функции под названием приготовление пищи)_

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

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

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

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

{Мнемоника}

_ " когда вы звоните горничной и просите ее приготовить завтрак, она __argues_ с вами о том, сколько яиц и колбасы, вы должны в еде. Она беспокоится о твоем холестерине.--1-->

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


это прекрасно объясняется в


вам нужно вернуться к основам.Как конструкторы, так и методы имеют параметры и аргументы.Многие люди даже называют конструкторы особого рода методами.Вот как объявляется метод параметры:

      type name(parameters){
           //body of method
          }

и вот как объявляется конструктор параметры:

classname(parameters){
//body
}

Теперь давайте посмотрим пример кода, с помощью которого мы вычисляем объем куба:

public class cuboid {
    double width;
    double height;
    double depth;

      cuboid(double w,double h,double d) { 
      //Here w,h and d are parameters of constructor
       this.width=w;
       this.height=h;
       this.depth=d;
       }

        public double volume() {
        double v;
        v=width*height*depth;
        return v;
        }
        public static void main(String args[]){
           cuboid c1=new cuboid(10,20,30);
           //Here 10,20 and 30 are arguments of a constructor
           double vol;
           vol=c1.volume();
           System.out.println("Volume is:"+vol);

           }
    }

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