В какого типа переменных хранить адреса?

В C++ адреса хранятся в указателях. Указатель - это переменная, которая содержит адрес ячейки памяти, где расположены данные. Тип указателя определяет тип данных, на которые он указывает.

Например, чтобы хранить адрес целочисленной переменной, можно использовать указатель типа int *. Для хранения адреса числа с плавающей запятой - указатель типа float *. Если необходимо хранить адрес символа, можно использовать указатель типа char *. В общем случае, тип указателя соответствует типу данных, на которые он указывает.

Для объявления указателя, используется оператор *, который указывает на то, что это переменная-указатель. Например:

int *ptr; // указатель на целое число
float *fptr; // указатель на число с плавающей запятой
char *cptr; // указатель на символ

Для присваивания адреса переменной указателю, используется оператор &. Например:

int num = 42;
int *ptr = # // указатель ptr теперь содержит адрес переменной num

Также указатели могут использоваться для динамического выделения памяти с помощью оператора new. Например:

int *arr = new int[5]; // выделение памяти под массив из 5 целых чисел

После окончания работы с динамически выделенной памятью, ее необходимо освободить с помощью оператора delete. Например:

delete[] arr; // освобождение памяти

Указатели могут использоваться для передачи адреса переменной в функции и для работы с динамической памятью. Они являются мощным инструментом в C++, но требуют внимательной работы, чтобы избежать ошибок, таких как неправильное разыменование указателя или утечки памяти.