Совпадение имен с параметрами в C++
Параметры функции являются локальными переменными внутри нее. Давайте назовем параметр функции таким же именем, как и внешнюю глобальную переменную:
#include <iostream>
int num = 1;
void func(int num) {
std::cout << num << "\n";
}
int main() {
func(num); // выведет 1
return 0;
}
В данном случае у нас получится так, что
снаружи функции будет переменная num
и внутри функции будет переменная num.
Но это будут разные переменные: изменение
переменной внутри функции будет приводить
к изменению локальной переменной
функции. А внешняя переменная внутри
функции будет недоступна и не сможет быть
изменена никаким способом. Проверим:
#include <iostream>
int num = 1;
void func(int num) {
num = 2; // меняем локальную переменную
}
int main() {
func(num);
std::cout << num << "\n"; // выведет 1 - ничего не поменялось
return 0;
}
Определите, не запуская код, что выведется в консоль:
int num = 1;
void func(int num) {
num = 2;
}
int main() {
func(num);
std::cout << num << "\n";
return 0;
}
Определите, не запуская код, что выведется в консоль:
int num = 1;
void func() {
num = 2;
}
int main() {
func();
std::cout << num << "\n";
return 0;
}
Определите, не запуская код, что выведется в консоль:
int num = 1;
void func() {
int num = 2;
}
int main() {
func();
std::cout << num << "\n";
return 0;
}