Initial commit
This commit is contained in:
72
cpp/Функции/аргументы.cpp
Normal file
72
cpp/Функции/аргументы.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user