Читать книгу Ссылки и указатели в C++: от основ к безопасности и современному коду - - Страница 111

Задача 16: Сравнение адресов

Оглавление

Вы должны написать программу, в которой определяется разность адресов двух полей структуры, содержащей два целочисленных члена. Объявите структуру с именем S, содержащую два поля типа int – a и b. Создайте экземпляр этой структуры в функции main, а затем выведите на экран разность адресов полей b и a, используя оператор взятия адреса &. Обратите внимание: разность указателей одного типа вычисляется в количестве элементов между ними, а не в байтах.

Подсказка: хотя между полями a и b в памяти действительно находится 4 байта (размер int на большинстве платформ), арифметика указателей автоматически делит реальное смещение в байтах на размер типа, к которому относятся указатели. Поэтому выражение &s.b – &s.a вернёт 1, а не 4. Убедитесь, что ваш код выводит именно этот результат, не пытаясь вручную умножать или делить смещение – всё делается средствами языка.

Ссылки и указатели в C++: от основ к безопасности и современному коду

Подняться наверх