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

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

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

Инкрементальное увеличение значения указателя не работает - C++

09.02.2012, 12:59. Просмотров 491. Ответов 4
Метки нет (Все метки)

Сразу скажу, что практической цели никакой нет, просто пытаюсь понять принцип работы изменения значения указателя.

Есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main() {
 
    int a;
    int * b, * c, * d;
 
    a = 5;
    b = &a;
    cout << "b: " << *b << ",    " << b << "\n";
 
    c = b++ ;
    cout << "c: " << *c << ",    " << c << "\n";
 
    d = c++;
    cout << "d: " << *d << ",    " << d << "\n";
 
    return 0;
}
Выводит такой текст:
b: 5, 0x7fff743cf42c
c: 5, 0x7fff743cf42c
d: 5, 0x7fff743cf42c
По моему понимаю, должен увеличиваться адрес в памяти: 2c, 2e, 30 и так далее. Но почему этого не происходит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2012, 12:59     Инкрементальное увеличение значения указателя не работает
Посмотрите здесь:

Почему увеличение указателя на sizeof(тип) не тождественно инкременту этого же указателя? - C++
Всем доброго дня.:) Можете обьяснить ,почему при инкриментировании указателя,его значение(адресс) увеличивается на 4 (размер int в...

Что такое инкрементальное программирование - C++
Что такое инкрементальное программирование?

Изменение значения указателя - C++
Здравствуйте В коде приведена функция, которая при помощи указателей считывает размер массива и его элементы из файла блокнота. Почему...

Увеличение значения переменной - C++
Доброго времени суток, форумчане) Утром начал учить C++, сейчас пишу простенькую игру типа &quot;угадай число&quot;. Всё работает и вроде бы даже...

не работает инкрементация указателя - C++
кинул мне сегодня знакомый програмку...нужно было переделать ее с использованием указателя суть в чем...программа - обычная викторина,...

Как работает инкрементирование указателя? - C++
#include &lt;iostream&gt; #include &lt;cctype&gt; using namespace std; int main(){ char *p; char str=&quot;This Is A Test&quot;; cout &lt;&lt; &quot;исходная...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
09.02.2012, 13:01     Инкрементальное увеличение значения указателя не работает #2
почитай внимательно как работают операторы пост и пред инкремента !!!
WhiteSuite
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 3
09.02.2012, 13:07  [ТС]     Инкрементальное увеличение значения указателя не работает #3
Спасибо за дружелюбный развернутый ответ, который так нужен новичку Я уже читал и не раз, но видимо что-то пропустил или недопонял. Зачем вообще нужен форум, если человека прочитавшего книгу уже не один раз отправляют ее перечитывать?

c = b++ - "b" увеличивается на единицу (а так как ее значение - участок в памяти, то он и должен как мне кажется увеличиваться на один байт), а потом это присваивается в "c".
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
09.02.2012, 13:08     Инкрементальное увеличение значения указателя не работает #4
как раз нет, с = b++ сначала присваивает, а потом увеличивает

Цитата Сообщение от WhiteSuite Посмотреть сообщение
как мне кажется увеличиваться на один байт
т.к. это указатели, то увеличивацо он будет не на один байт, а на размер типа, т.е. на sizeof(type)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2012, 13:14     Инкрементальное увеличение значения указателя не работает
Еще ссылки по теме:

Увеличение значения переменной, обявленной в глобальной области - C++
Начал изучать CUDA, т. к. надо пистаь курсач... И вот у меня появился вопрос. Допустим я выделил в глобальной памяти интовую переменную....

Преобразование кода без указателя в код с использованием указателя - C++
Правильно ли выполнил? Исходный код без указателя #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; using namespace...

Как сделать функцию от указателя на класс и указателя на метод? - C++
Не получается сделать функцию, параметрами которой являются указатель на класс и на метод. Обращаться к классу нужно именно по указателю,...

В чём отличие константного указателя и указателя на константу? - C++
int *const p1 и int const* p2 Объясните мне в чём тут отличие.

Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... - C++
Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... как сделать...

Узнать тип значения, зная тип указателя - C++
Здравствуйте! Есть такой код: template&lt;class Iter&gt; void func(Iter first, Iter last) { //... Iter_value_type = *first;...


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

Или воспользуйтесь поиском по форуму:
WhiteSuite
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 3
09.02.2012, 13:14  [ТС]     Инкрементальное увеличение значения указателя не работает #5
Ага, все понял, спасибо!
Yandex
Объявления
09.02.2012, 13:14     Инкрементальное увеличение значения указателя не работает
Ответ Создать тему
Опции темы

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