Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 84
#1

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

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

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

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

Наверное, вопрос глупый. Прошу прощения
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 18:18     Инкремент указателей и как обратиться к "промежуточному" адресу переменной
Посмотрите здесь:

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

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

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

Как записать имя переменной чтобы она обозначала греческую "фи" - C++
φ как эту величину записать в С++?

Как реализовать вызов "переменной" функции? - C++
Столкнулся с задачей в которой имя исполняемой функции назначается в процессе выполнения...как реализовать такой финт ушами? Например есть...

Как "выдрать" значение переменной из цикла - C++
В общем. Есть глобальная переменная. Есть цикл в одной из функций, где значение этой переменной с каждым проходом изменяется. Нужно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FreeMan108
121 / 121 / 6
Регистрация: 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 байта.
SatanaXIII
Супер-модератор
Эксперт С++
5604 / 2638 / 242
Регистрация: 01.11.2011
Сообщений: 6,497
Завершенные тесты: 1
18.11.2013, 18:37     Инкремент указателей и как обратиться к "промежуточному" адресу переменной #3
Цитата Сообщение от RareScrap Посмотреть сообщение
указывает на адрес 0x104, а не на 0x101?
Потому что
Цитата Сообщение от RareScrap Посмотреть сообщение
Переменная типа int занимает 4 байта

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


Цитата Сообщение от RareScrap Посмотреть сообщение
И что получится, если обратиться к адресу 0x101?
Да какая-нибудь хрень. У вас считается значение с 0x101 до 0x105 и преобразуется в целочисленный тип.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2013, 18:50     Инкремент указателей и как обратиться к "промежуточному" адресу переменной
Еще ссылки по теме:

Ошибка "нарушение прав доступа при чтении по адресу." - C++
Использовать стек для решения следующей задачи. В текстовом файле записана без ошибок формула следующего вида: ...

"Нарушение прав доступа при чтении по адресу 0x00000000" - C++
код: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> int strtoint(char *s) { int temp = 0; int i = 0; ...

Ошибка "Вызвано исключение по адресу" - C++
#include "stdafx.h" #pragma warning(disable : 4996) #include <iostream> #include <Windows.h> #include <fstream> #include "cstdio"...

Невозможно обратиться к private член, объявленному в классе "Complex" - C++
выдавало ошибку "невозможно обратиться к private член, объявленному в классе "Complex"" я поменяла int n; private: double re; ...

Невозможно обратиться к protected член, объявленному в классе "Counter" - C++
typedef unsigned int uint; class Counter { protected: ...

Структура "Студент": переделать задачу с использованием указателей - C++
Описать Структуру с именем STUDENT с полями: 1. NAME-фамилия и инициалы; 2.GROUP-номер группы; 3.SES-успеваемость(массив из 5...


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

Или воспользуйтесь поиском по форуму:
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 84
18.11.2013, 18:50  [ТС]     Инкремент указателей и как обратиться к "промежуточному" адресу переменной #4
Большое спасибо!
Yandex
Объявления
18.11.2013, 18:50     Инкремент указателей и как обратиться к "промежуточному" адресу переменной
Ответ Создать тему
Опции темы

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