Передача по значению:
При передаче данных по значению функции передается копия аргумента. Это означает, что изменения внутри функции не влияют на оригинальные данные.
Пример:
void modifyValue(int value) {
value = 10;
}
int main() {
int x = 5;
modifyValue(x);
// Здесь x все еще равно 5, потому что modifyValue получила копию x
return 0;
}
Передача по ссылке:
При передаче по ссылке функции передается сам объект, а не его копия. Это позволяет функции изменять оригинальные данные.
Пример:
void modifyValueByReference(int& value) {
value = 10;
}
int main() {
int x = 5;
modifyValueByReference(x);
// Теперь x равно 10, потому что modifyValueByReference работает с оригинальным x
return 0;
}
Передача через указатель:
При передаче через указатель функции передается адрес объекта. Функция может изменять данные по этому адресу, но не имеет информации о самом объекте, на который указывает указатель.
Пример:
void modifyValueByPointer(int* ptr) {
*ptr = 10;
}
int main() {
int x = 5;
int* ptr = &x;
modifyValueByPointer(ptr);
// Теперь x равно 10, потому что modifyValueByPointer изменила значение через указатель
return 0;
}