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

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

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

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

09.02.2012, 12:59. Просмотров 471. Ответов 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     Инкрементальное увеличение значения указателя не работает
Посмотрите здесь:

C++ Замена значения в матрице. Работает через раз.
C++ Инкремент указателя
C++ Разименование указателя
Проверьте что работает не правильно (задать значения вещественным элементам матриц) C++
не работает инкрементация указателя C++
Как работает инкрементирование указателя? C++
C++ Изменение значения указателя
Как работает метод get и putback (Подсчитать количество символов ввода вплоть до значения '$') C++
Увеличение значения переменной, обявленной в глобальной области C++
C++ Программа работает некорректно, в результате выводятся заданные изначально значения
Увеличение значения переменной C++
C++ Что такое инкрементальное программирование

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Инкрементальное увеличение значения указателя не работает
Ответ Создать тему
Опции темы

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