Давайте разберем то, что вы не поняли (а на лекции ходить надо

)
1. Передача параметра в функцию
по значению
Код:
void f(int a) {
a = 10;
}
int b = 5;
f(b);
cout << b;
Некоторые люди надеются, что после выполнения функции b станет 5. А вот фиг вам! При вызове функции создается
копия значения переменной b. Кривой но наглядный пример
Код:
int b = 5;
int c= b; // ЭТО "ДОБАВИЛ" компилятор
f(c);
Если вам надо изменить переменную, то передавать надо не по значению, а по
указателю.
Что такое указатель? Это адрес памяти (целое число) по которму лежит значение переменной.
т.е.
если по адресу 0x50 у нас лежит значение переменной b, которое равно 5, то численное значение &b будет 0x50;
теперь типичная ошибка
Код:
void f( int *a) { // передаем указатель
a = 10;
}
ВОт так делать НЕ НАДО. Вы только что изменили не значение по адресу, а
САМ адрес. Для доступа к значению указателя есть операция разыменования *
Код:
void f(int *a) {
*a = 10;
}
Как теперь вызывать функцию?
Код:
int b = 5;
f(&b); // передаем адрес по которому лежит значение b (указатель)
cout << b;
В С++ введен еще один тип передачи параметра по ссылке (by reference) выглядит он так
Код:
void f(int &a) {
a =10;
}
int b =5;
f(b);
cout << b;
Данный вызов равноценен передечи указателя, только "скрывает" работу с указателем (взятие адреса и разыменование)