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

не работает инкрементация указателя - C++

Восстановить пароль Регистрация
 
maksas
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 11
30.12.2013, 03:08     не работает инкрементация указателя #1
кинул мне сегодня знакомый програмку...нужно было переделать ее с использованием указателя

суть в чем...программа - обычная викторина, 8 вопросов, 4 варианта, из которых 1 правильный....если вопрос правильный, вызывалась функция otvet(&points), в которой

C++
1
2
3
4
5
void otvet(int *points)
{
    cout << "Вы выбрали правильный ответ!" << endl;
    *points++;
}
на первый взгляд, вроде все норм...но....постоянно выбивало 0...независимо от к-ства правильных ответов....в конце points=0...
понял, что ошибка в функции...почему-то не инкрементирует *points...и...после нескольких минут танцов с бубнов стало ясно, что *point++ никак уж не канает....

попробовал ++*point
попробовал *point+=1
попробовал *point=*point+1

все работает...а от при *point++ никак....и немогу понять...указатель (ну эта звездечка) имеет больший приоритет ежели додавание...значит оно берет значение point при увеличивает на 1....но почему-то залезная бошка думает по-иначему....ХЕЛП
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,722
Записей в блоге: 3
30.12.2013, 03:31     не работает инкрементация указателя #2
Цитата Сообщение от maksas Посмотреть сообщение
указатель (ну эта звездечка) имеет больший приоритет ежели додавание
Аж никак. Разадресация младше инкремента.
C++
1
2
3
4
5
int a[] ={3,2,1};
int *b=a;
cout<<*b++<<endl;// 3 инкремент старше  разыменования и делается раньше, но подставляется прежнее значение указателя
//и разыменовывается, так как используется постфиксная форма. Поэтому и 3
cout<<*b;//2 тут уже разадресован инкрементированный указатель
maksas
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 11
30.12.2013, 04:06  [ТС]     не работает инкрементация указателя #3
все, спасибо...разобрался)))
ох уж этот с++, ох уж его указатели...который день уже сижу над ними...зачем их только понапридумывали
Croessmah
30.12.2013, 08:34
  #4

Не по теме:

Цитата Сообщение от maksas Посмотреть сообщение
зачем их только понапридумывали
ну попробуйте без них

IGPIGP
30.12.2013, 13:59     не работает инкрементация указателя
  #5

Не по теме:

Croessmah, без них невкусно.
Помню у меня когда-то было 3 барьера для понимания темы. Если крупные считать.
1. Понять, что разадресация и разименование это синонимы. Пока не нашёл прямое указание мучился страшно.
2. Понять что "прямо", это "по значению" то есть передача копии, а "косвенно" это "по ссылке", то есть передача, непосредственно места хранения.
3. Понять, что указатель на char это совершенно уникальная штука. Беда в том, что волею судеб начал с него. С тех пор никому не советую.

Yandex
Объявления
30.12.2013, 13:59     не работает инкрементация указателя
Ответ Создать тему
Опции темы

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