Указатель для регистрации переменных

Возможный дубликат:
Адрес переменной регистра

register int yy = 6;
int * myptr = &yy;
cout<<myptr<<" "<<&yy<<" "<<*myptr<<" "<<yy<<endl;

Deitel и Deitel, третье издание C ++, как программировать: на последней странице стр. 307 написано — оператор адреса не может применяться к переменным, объявленным с помощью регистра класса хранения. Как вышеприведенный код печатает:
0x28ff24 0x28ff24 6 6

Я что-то упускаю из-за указателя на переменные с классом хранения регистров?

-1

Решение

Компилятор игнорирует ваш register запрос, потому что ваш код принимает адрес yy,

4

Другие решения

Ваша книга устарела.

В современном C ++ использование register Ключевое слово устарело и не влияет на объявление (кроме того, что оно может служить подсказкой компилятору, что переменная может быть интенсивно использована). Это не мешает вам взять адрес переменной.

С действительно имеет это ограничение; и, вероятно, более старая версия C ++ также сделала, но у меня нет исторических документов, чтобы подтвердить это.

2

Дубликат Адрес переменной регистра

Отдельно, вот документация IBM по этому вопросу для одного из их компиляторов:

http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fregdef.htm

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector