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

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

Восстановить пароль Регистрация
 
WhiteSuite
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 3
09.02.2012, 12:59     Инкрементальное увеличение значения указателя не работает #1
Сразу скажу, что практической цели никакой нет, просто пытаюсь понять принцип работы изменения значения указателя.

Есть такой код:
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 и так далее. Но почему этого не происходит?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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)
WhiteSuite
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 3
09.02.2012, 13:14  [ТС]     Инкрементальное увеличение значения указателя не работает #5
Ага, все понял, спасибо!
Yandex
Объявления
09.02.2012, 13:14     Инкрементальное увеличение значения указателя не работает
Ответ Создать тему
Опции темы

Текущее время: 15:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru