Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Длина адреса переменной (указателя)

#cpp #указатели


short int a;
short int *pa;
pa = &a;
*pa = 10;
cout << "a  = " << a << endl; //a  = 10
cout.setf(ios::hex);
cout << "&a = " << &a;        //&a = 0x7ffc079b67ae


Неужели short int хватает чтобы записать такой длинный адрес переменной? Насколько
мне известно, адреса должны выглядеть примерно так 0x7ffc079b67ae. Неужели short int
хватает чтобы записать такой адрес, или запись адреса в указатель происходит каким-то
другим образом? Объясните, пожалуйста, кто разбирается. Или это происходит как-то по
какой-то ссылке на указатель?
    


Ответы

Ответ 1



Проведем аналогию - адрес на конверте в общем-то, всегда одного размера, указываете ли вы на небоскреб или на собачью будку :) Т.е. размер указателя не связан с размером того, на что он указывает. А чтобы понять, какого конкретно размера ваш указатель, добавьте в программу следующие строки: cout << "Размер a = " << sizeof(a) << " байт\n"; cout << "Размер pa = " << sizeof(pa) << " байт\n"; и посмотрите, что они выведут.

Комментариев нет:

Отправить комментарий