Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
RareScrap
1 / 1 / 0
Регистрация: 14.10.2013
Сообщений: 87
#1

Инкремент указателей и как обратиться к "промежуточному" адресу переменной

18.11.2013, 18:18. Просмотров 978. Ответов 3
Метки нет (Все метки)

Доброго времени суток!

Пусть указатель указывает на адрес переменной типа int. Переменная типа int занимает 4 байта (пускай она находится по адресу 0x100). Тогда указатель указывает на адрес 0x100. Почему инкрементируя адрес в указателе на 1, указатель указывает на адрес 0x104, а не на 0x101? И что получится, если обратиться к адресу 0x101?

Наверное, вопрос глупый. Прошу прощения
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 18:18
Ответы с готовыми решениями:

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года "весна", "лето", "осень", "зима" определить...

Как "подменить" содержимое для массива указателей ?
Есть: const char *text1 = "test1"; const char *text2 = "test2"; const char...

"динамически выделяет массив указателей на базовый класс" - как это понять?
Что значит вообще массив на класс? Я не совсем понимаю, мы ведь оперируем...

Массив шаблонов или как обратиться к элементам разного типа, хранящиеся в одном "списке" по индексу
Собственно, вот такой вот вопрос. Очень нужно решение. Спасибо.

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...

3
FreeMan108
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
18.11.2013, 18:34 #2
Для адресации указателя на тип int (32) требуется 4 (32/8) байта, для int (64) - 8, для char - 1 байт, для wchar_t - 2 байта. Именно поэтому при уменьшении/Увеличении его на 1 он сдвигается на 4 байта.
0
SatanaXIII
Супер-модератор
Эксперт С++
5769 / 2767 / 375
Регистрация: 01.11.2011
Сообщений: 6,726
Завершенные тесты: 1
18.11.2013, 18:37 #3
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Цитата Сообщение от RareScrap Посмотреть сообщение
указывает на адрес 0x104, а не на 0x101?
Потому что
Цитата Сообщение от RareScrap Посмотреть сообщение
Переменная типа int занимает 4 байта

Занимала бы 32 указатель сместился бы в 0х132. В общем случае он смещается на sizeof( type ).


Цитата Сообщение от RareScrap Посмотреть сообщение
И что получится, если обратиться к адресу 0x101?
Да какая-нибудь хрень. У вас считается значение с 0x101 до 0x105 и преобразуется в целочисленный тип.
2
RareScrap
1 / 1 / 0
Регистрация: 14.10.2013
Сообщений: 87
18.11.2013, 18:50  [ТС] #4
Большое спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2013, 18:50

Инкремент и объект "cout"
Всем привет. Столкнулся с такой непоняткой: int j=5; while (j++ < 9) ...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую...

Как отключить автоматическое добавление "_" "@" "number" к имени экстернального метода?
Здраствуйте! Подскажите как это делается? (вопрос в названии темы) среда :...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru