Files
learning/cpp/Функции/аргументы.cpp
2022-05-06 00:49:26 +03:00

72 lines
2.4 KiB
C++
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <iostream>
using namespace std;
void unchangingFunc(int passedVar) {
passedVar = 5; // Значение меняется только внутри функции
cout << "Новое значение passedVar внутри unchangingFunc: " << passedVar << endl;
}
void swap(int &num1, int &num2) {
/**
& перед именем в списке аргументов означет, что передастся ссылка на память,
с которой можно работать как со значением (обратное преобразование не нужно)
*/
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
void add_lists( int first[], int second[], int total[], int length ) {
/**
При передаче массива значения в изначальном массиве также меняются
Это поведение можно предотвратить используя const:
void add_lists( const int first[], const int second[], int total[], int length )
При таком объявлении, попытка изменить значения первых двух массивов внутри функции
вызовет ошибку
*/
for( int i = 0; i < length; i++ ) {
total[i] = first[i] + second[i];
};
}
/*
Перегрузка функций позволяет создать несколько функций с одинаковыми именами,
но разными параметрами или количеством параметров
*/
void my_func(int first_arg) {
cout << "My func called with one int argument" << endl;
}
void my_func(double first_arg) {
cout << "My func called with one double argument" << endl;
}
void my_func(int first_arg, int second_arg) {
cout << "My func called with two int arguments" << endl;
}
int main() {
int myVar = 3;
unchangingFunc(myVar); // Внутри main значение myVar остаётся таким же
cout << "Новое значение myVar после unchangingFunc: " << myVar << endl;
int myOtherVar = 9;
// При вызове функции, принимающей ссылки, дополнительные преобразования не нужны
swap(myVar, myOtherVar);
cout << "После смены мест значение myVar=" << myVar << ", myOtherVar=" << myOtherVar << endl;
// Вызов перегруженный функций
my_func(4);
my_func(double(4));
my_func(3, 5);
return 0;
}