При использовании указателей можно наткнуться не неожиданные неприятности,..

При использовании указателей можно наткнуться не неожиданные неприятности, которые не будут являться синтаксическими ошибками, поэтому обнаружить их будет крайне сложно. И поэтому лучше этих ошибок не допускать и не использовать некоторые возможности, даже если они есть. Читать далее… 👉 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 у нас хранились рядом, то перемен

При использовании указателей можно наткнуться не неожиданные неприятности,..

Автор: Основы программирования

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий