Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpPmScPm 300 of 390 menu
◀ ▶

Изменение параметра в C++

Число, переданное параметром, копируется. Изменение копии не меняет переменную снаружи:

#include <iostream> void func(int bbb) { bbb = 2; } int main() { int aaa = 1; func(aaa); std::cout << aaa << "\n"; // выведет 1 return 0; }

Это конечно же работает, даже если внешняя и внутренняя переменная имеют одно имя:

#include <iostream> void func(int num) { num = 2; } int main() { int num = 1; func(num); std::cout << num << "\n"; // выведет 1 return 0; }

Имя массива в параметре означает те же ячейки. Изменение массива внутри функции видно снаружи.

Вектор параметром копируется. Изменение копии не затрагивает вектор снаружи:

#include <iostream> #include <vector> void func(std::vector<int> vec) { vec[0] = 0; } int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; func(vec); std::cout << vec[0] << "\n"; // выведет 1 - не изменилось return 0; }

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

void func(std::string bbb) { bbb = "b"; } int main() { std::string aaa = "a"; func(aaa); std::cout << aaa << "\n"; return 0; }

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

void func(std::string bbb) { bbb = "b"; } int main() { std::string aaa = "a"; func(aaa); std::cout << bbb << "\n"; return 0; }

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

void func(std::string str) { str = "b"; } int main() { std::string str = "a"; func(str); std::cout << str << "\n"; return 0; }
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить