Во всех языках программирования передача аргументов функциям или методам является обычной практикой.

В большинстве случаев люди путаются с этими терминами, когда они внезапно появляются в книге, или в вашем классе, или в редакционной статье по программированию.

Итак, давайте упростим здесь задачу:

Передача аргументов функции означает: предоставление входных значений функции при ее вызове или вызове.

например: забава (int n)

В этой функции n — это параметр, который принимает входные значения, переданные функции.

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

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

По крайней мере, так говорит общепринятое определение.

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

Объяснение

void add_one(num){
    num += 1
    cout<<"Inside function: "<<num<<endl;
}

int main(){
    num = 5
    add_one(num)
    cout<<"Outside function: "<<num<<endl;
}

Что мы пытаемся сделать?

В этом примере мы определили функцию с именем add_one, которая принимает параметр с именем num. Внутри функции мы увеличиваем значение num на 1 и печатаем результат.

Затем в основной функции мы определяем переменную с именем num со значением 5 и вызываем функцию add_one с этой переменной в качестве аргумента. Наконец, мы печатаем значение num вне функции.

Когда мы запускаем этот код, мы получаем следующий вывод

Inside function: 6
Outside function: 5

Что случилось?

Как видите, значение num внутри функции увеличивается до 6, но значение num вне функции остается прежним, равным 5.

Это связано с тем, что мы передали num в функцию add_one по значению, а это означает, что в функцию была передана копия значения num. Поэтому любые изменения, внесенные в значение num внутри функции, влияют только на локальную копию переменной, а не на исходную переменную вне функции.

Как видно из диаграммы, значение num вне функции не изменяется функцией. Это связано с тем, что функция add_one использует передачу по значению для передачи аргумента num в функцию. При передаче по значению создается копия значения аргумента и передается в функцию. Затем функция изменяет значение локальной переменной, а не исходной переменной в вызывающем коде.

Преимущества использования передачи по значению

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

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

Недостатки использования передачи по значению

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

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

Я буду делиться аналогичным подробным объяснением по теме`Передача по ссылке`.

Вы можете подписаться на меня, чтобы получать последние обновления, когда они появятся.

Надеюсь, вы узнали что-то ценное из этой статьи.

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

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

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

Вы можете побудить меня написать больше на: https://ko-fi.com/medusaverse

Я буду рад связаться с вами: https://linktr.ee/harshit_raj_14