#include <iostream>
void passByValue(int* p) {
p = new int;
}
void passByReference(int*& p) {
p = new int;
}
int main() {
int *p1 = 0;
int *p2 = 0;
passByValue(p1);
passByReference(p2);
std::cout << p1 << "\n";
std::cout << p2 << "\n";
}
Рассмотрим вышеуказанную программу. Первая строка всегда будет печатать ноль, означая, что переменная main
p1
была , а не , обновленная при вызове passByValue
. Напротив, p2
был обновлен вызовом на passByRefernce
.