void (void - пустой) используется в заголовках функций, когда нам не нужно возвращать никаких значений.
Указатели на разные типы не могут использоваться друг с другом:
int a = 0;
float b = 1;
int* ptr_a = &a;
float* ptr_b = &b;
// ptr_a = ptr_b; // Так нельзя!!!
Чтобы обойти это ограничение можно воспользоваться указателем на void:
int a = 0;
float b = 1;
char c = 2;
int* ptr_a = &a; // Указатель на тип int
float* ptr_b = &b; // Указатель на тип float
void* ptr_c = &c; // указатель на void
// ptr_a = ptr_b; // Так нельзя!!!
ptr_c = a; // Оба варианта
ptr_c = b; // корректны
Указатели на void особенно полезны при использовании с классами.
Операции с указателями в C++
С указателями можно выполнять следующие операции:
разадресация, или косвенное обращение к объекту (*)
присваивание,
сложение с константой,
вычитание,
инкремент (++),
декремент (—),
сравнение,
приведение типов.
При работе с указателями часто используется операция получения адреса (&).
Операция разадресации, или разыменования, предназначена для доступа к величине, адрес которой хранится в указателе. Эту операцию можно использовать как для получения, так и для изменения значения величины
Операции * и & при работе с указателями
Операция получения адреса обозначается знаком &, а операция разадресации *. Первая возвращает адрес своего операнда. Например:
1 2 3 4
float a; //объявлена вещественная переменная a float *adr_a; //объявлен указатель на тип float adr_a = &a; //оператор записывает в переменную adr_a//адрес переменной a
Операция разадресации *возвращает значение переменной, хранящееся в по заданному адресу, то есть выполняет действие, обратное операции &:
1 2 3 4
float a;//объявлена вещественная переменная a float *adr_a; //объявлен указатель на тип float a = *adr_a;//оператор записывает в переменную a//вещественное значение, хранящиеся по адресу adr_a