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