При использовании указателей можно наткнуться не неожиданные неприятности, которые не будут являться синтаксическими ошибками, поэтому обнаружить их будет крайне сложно. И поэтому лучше этих ошибок не допускать и не использовать некоторые возможности, даже если они есть. Читать далее… 👉 https://dzen.ru/media/baseprogramming/chto-budet-esli-vmesto-4-baitov-zapisat-8-644dde0749a4354726ab40b2
Что будет, если вместо 4 байтов записать 8
https://dzen.ru/media/baseprogramming/chto-budet-esli-vmesto-4-baitov-zapisat-8-644dde0749a4354726ab40b2
Ранее я рассказывал о том, как можно привести тип указателя, и записать адрес переменной одного типа в указатель другого типа. Всё это можно, но не нужно (без очень крайней необходимости). Потому что эти манипуляции могут привести к очень-очень труднонаходимым ошибкам. Вот пример: Обратите внимание, что мы в указатель типа double записали адрес целочисленной переменной n2 типа int. Затем по этому адресу мы записали какое-то число. Переменную n1 мы не трогали. И, тем не менее, если после этих действий мы выведем её значение на экран, то получим “неожиданный” результат: Почему это произошло? Потому что переменные n1 и n2 объявлены “рядом”, и могут иметь смежные адреса: Но тип double занимает не 4 байта, а 8. Поэтому, когда мы сохранили в указатель адрес переменной n2, а потом по этому адресу записали какое-то число, то этим числом были заполнены 8 байтов (а нашем примере это 8 байтов в диапазоне адресов 0x6ffe00…0x6ffe07). И, поскольку переменные n1 и n2 у нас хранились рядом, то перемен
Автор: Основы программирования