Параметры и аргументы функций на C++
НАВИГАЦИЯ ПО СТРАНИЦЕ
Параметры функций — это способ передачи данных внутрь функции, аргументы — фактические значения, передаваемые функции при её вызове. Давайте рассмотрим основы использования параметров и аргументов в C++.
Параметры функций :
Параметры функции объявляются в её заголовке и указывают, какие данные функция ожидает получить при вызове. Пример:
#include <iostream>
// Функция с параметрами
void greet(std::string name, int age) {
std::cout << "Привет, " << name << "! Тебе " << age << " лет." << std::endl;
}
int main() {
// Вызов функции с аргументами
greet("Иван", 25);
return 0;
}
В приведенном примере функция greet имеет два параметра: name типа std::string и age типа int. При вызове функции в main() передаются соответствующие аргументы.
Значения по умолчанию :
Вы можете установить значения по умолчанию для параметров функции, что позволяет вызывать функцию с меньшим числом аргументов. Пример:
#include <iostream>
// Функция с параметрами по умолчанию
void greet(std::string name = "Гость", int age = 18) {
std::cout << "Привет, " << name << "! Тебе " << age << " лет." << std::endl;
}
int main() {
// Вызов функции без указания аргументов
greet();
// Вызов функции с указанием одного аргумента
greet("Мария");
return 0;
}
Передача по значению и по ссылке:
По умолчанию параметры передаются в функцию "по значению", что означает, что функция работает с копией аргументов. Однако вы также можете передавать параметры "по ссылке", чтобы функция могла изменять оригинальные данные. Пример:
#include <iostream>
// Функция с параметром по значению
void squareByValue(int x) {
x = x * x;
}
// Функция с параметром по ссылке
void squareByReference(int &x) {
x = x * x;
}
int main() {
int number = 5;
// Вызов функции с параметром по значению
squareByValue(number);
std::cout << "По значению: " << number << std::endl; // Вывод: 5
// Вызов функции с параметром по ссылке
squareByReference(number);
std::cout << "По ссылке: " << number << std::endl; // Вывод: 25
return 0;
}
В этом примере squareByValue изменяет копию аргумента, а squareByReference изменяет сам аргумент.