адресная арифметика с++ и онлайн компиляторы

80
03 октября 2021, 12:40

извиняюсь за нубский вопрос: при обьявлении и инициализации переменных - как происходит восприятие указателем или онлайн-компилятором их адреса? Поясню к примеру int x=1,y=2,z=3;

допустим, у меня *ptr указывает на x, если вызвать *(ptr+1) (или иногда *(ptr-1))- он не всегда укажет на y.

Но если сначала вывести адрес переменной, т.е. std::cout<<&y, допустим (и он в большинстве онлайн компиляторов идет последовательно рядом с х). То *(ptr+1) укажет на y, понятное дело, ведь адрес будет последовательным после х!

Т.е. при проверке адреса указатель только тогда понимает, куда указывать? или компилятор только тогда узнает (или присваивает) адрес?

Заранее спасибо

Answer 1

Если *"ptr указывает на x", то при вызове *(ptr+1) или *(ptr-1) получается неопределенное поведение, так как разыменовываемый указатель является невалидным.

READ ALSO
C++, вопрос про атомарность

C++, вопрос про атомарность

Я не могу найти ответы на следующие вопросы:

115
Соединение сигналами и слотами класса приложения и класса из dll подгружаемой динамически

Соединение сигналами и слотами класса приложения и класса из dll подгружаемой динамически

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

87
postgresql для разработчика С++

postgresql для разработчика С++

Всем приветПожалуйста, помогите разобраться в ситуации

83
Проблема с вводом-выводом бинарных файлов

Проблема с вводом-выводом бинарных файлов

Проблема возникает на этапе чтения из файла, так как я открыл файл hex редактором, и в нем число естьЧто я делаю не так?

82