Совмещение указателей разных типов — это не самое лучшее решение. Однако это возможно. И если уж сильно надо (кто знает, вдруг придётся), то не помешает знать, как это делается, и какие неприятности могут встретиться на этом пути. Читать далее… 👉 https://dzen.ru/media/baseprogramming/privedenie-tipov-ukazatelei-643e08f0b9ff2b009f5f5e4c
Приведение типов указателей
https://dzen.ru/media/baseprogramming/privedenie-tipov-ukazatelei-643e08f0b9ff2b009f5f5e4c
Ранее я немного рассказал о работе с указателями в С++, сегодня продолжу. При объявлении типизированного указателя с его помощью можно будет работать с данными, имеющими размер указанного типа. Хотя с некоторыми процессорами и операционными системами всегда будет выделено 4 байта, рассчитывать на это не стоит. Поэтому важно следить за соответствием типов указателей. Пример: double fNum; int* P1; fNum = 500.0; P1 = &fNum; //Ошибка компиляции Здесь мы пытаемся в указатель, который предназначен для работы с числами размером 4 байта, записать адрес переменной, которая занимает 8 байтов. И это приведёт к ошибке времени компиляции — программа не будет создана. Если же мы сделаем так: int iNum; double fNum; int* P1; P1 = &iNum; *P1 = 500.0; то ничего страшного не произойдёт. Просто компилятор автоматически приведёт число 500.0 к целому типу int перед присваиванием. Также обратите внимание на то, что перед использованием указателя мы получаем в него адрес какой-то переменной типа int. Если
Автор: Основы программирования