Изменение параметра в 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;
}