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

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

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

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

30.12.2013, 03:08. Просмотров 326. Ответов 4
Метки нет (Все метки)

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

суть в чем...программа - обычная викторина, 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....но почему-то залезная бошка думает по-иначему....ХЕЛП
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2013, 03:08     не работает инкрементация указателя
Посмотрите здесь:

C++ Инкремент указателя
C++ Инкрементация (не могу понять почему так?)
Инкрементальное увеличение значения указателя не работает C++
Инициализация указателя C++
удаление указателя C++
C++ Копирование указателя
инициализация указателя C++
Как работает инкрементирование указателя? C++
Разыменование указателя C++
Инкрементация значения в map C++
Использование указателя this C++
C++ Инкрементация указателя по членам класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6411 / 3050 / 300
Регистрация: 04.12.2011
Сообщений: 8,257
Записей в блоге: 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     не работает инкрементация указателя
Ответ Создать тему
Опции темы

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