free(a)
).при передачи по значению передаваемое значение не меняется, а внутри функции создается временная переменная.
при передачи по указателю или ссылки передается только адрес, передаваемый объект можно изменить изнутри функции и не создается локальной (временной) переменной внутри функции. разница между передачи ссылкой и указателем в удобстве употребления (не надо писать звездочку каждый раз внутри функции).
#include <iostream>
using namespace std;
void f_value(int a){ // значение
a = 10; // изменяем параметр
}
void f_poiner(int * a){ // указатель
*a = 10; // изменяем параметр
}
void f_reference(int & a){ // ссылка
a = 20; // изменяем параметр
}
int main(){
int a = 0;
cout << "a = " << a << endl;
f_value(a); // значение переменной (а) НЕ изменится после выполнения
cout << "a = " << a << endl;
f_poiner(&a); // значение переменной (а) изменится после выполнения
cout << "a = " << a << endl;
f_reference(a); // значение переменной (а) изменится после выполнения
cout << "a = " << a << endl;
return 0;
}
---------------------------------------------------
a = 0
a = 0
a = 10
a = 20
Press <RETURN> to close this window...