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

210
13 сентября 2017, 13:45
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 хватает чтобы записать такой адрес, или запись адреса в указатель происходит каким-то другим образом? Объясните, пожалуйста, кто разбирается. Или это происходит как-то по какой-то ссылке на указатель?

Answer 1

Проведем аналогию - адрес на конверте в общем-то, всегда одного размера, указываете ли вы на небоскреб или на собачью будку :) Т.е. размер указателя не связан с размером того, на что он указывает.

А чтобы понять, какого конкретно размера ваш указатель, добавьте в программу следующие строки:

cout << "Размер a  = " << sizeof(a)  << " байт\n";
cout << "Размер pa = " << sizeof(pa) << " байт\n";

и посмотрите, что они выведут.

READ ALSO
Рекурсивная функция С++ Фибоначчи [требует правки]

Рекурсивная функция С++ Фибоначчи [требует правки]

Написать функцию, которая возвращает сумму n чисел ФибоначчиЧисло n принимается в качестве аргумента, нужно без доп

223
Периметр треугольника [требует правки]

Периметр треугольника [требует правки]

Дайте решение задачи по вычислению площади треугольника плизНужно найти периметр треугольника с заданными пользователем значениями и определить...

287
Дано 2 натуральных числа [требует правки]

Дано 2 натуральных числа [требует правки]

Дано 2 натуральных числаУзнать в каком из них сума цифр больше

227