Указатели

Указатель – переменная, значением которой является адрес области памяти, в которой хранится нужная нам переменная, определённого типа. Тип данных мы объявляем при объявлении указателя.

Как мы будем использовать указатели? Пока мы будем использовать указатели при вызове функции. Объявив переменную, имеющую тип нашей структуры, мы не будем передавать в функцию значения всех переменных структуры, а укажем, в качестве входных параметров функции, тип обрабатываемых данных (наша структура или класс) и адрес в памяти, где эти данные находятся.

Все изменения, которые будут произведены функцией, затронут сам объект (переменную), а не её копию.

Объявление указателей. Указатель – переменная содержащая адрес в памяти. При объявлении указателя необходимо указать тип данных переменной, на который указывает указатель.

При объявлении указателя используется оператор «звездочка» *.

int *n; – указатель на переменную целого типа.

#include <iostream>
using namespace std;

void fValue(int n) {
	n = 3;
}

void fPoint(int *ni) {
	*ni = 3;
}

int main()
{
	int n = 1;
	fValue(n);
	cout << "fValue n = " << n << endl;
	fPoint(&n);
	cout << "fPoint n = " << n << endl;
}
Вывод:
fValue n = 1
fPoint n = 3

Обратите внимание на передачу параметра в функцию. В функцию fValue мы передаем значение переменной n. Изменение значения переменной n в функции, не влияет на значение переменной n, объявленной в main().

При вызове функции fPoint, мы передаем адрес переменной n. Адрес передается добавлением оператора &. Этот адрес присваивается переменной ni, которая объявлена как указатель (int *ni). Изменение значения переменной, расположенной в памяти по адресу указанному в ni, изменит значение переменной n, объявленной в main().