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

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

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

Как сдвинуть указатель на несколько байт? - C++

10.06.2012, 18:29. Просмотров 718. Ответов 4
Метки нет (Все метки)

Сейчас разбираю пример из книжки и столкнулся со следующей проблемой.
Компилирую в Visual Studio 2005.

Переменная curr обьявленна как:
C++
1
_SYSTEM_PROCESSES *curr = (_SYSTEM_PROCESSES*)SystemInformation;
Тоесть она содержит указатель на массив структур _SYSTEM_PROCESSES.

Далее мне нужно сдвинуть указатель который хранится в ней на несколько байт, в
кинжке написанно так:
C++
1
(char*)curr+=curr->NextEntryDelta;
Компилятор выдаёт на этой строке ошибку:
error C2106: '+=' : left operand must be l-value

Что делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 18:29     Как сдвинуть указатель на несколько байт?
Посмотрите здесь:

Как прочитать несколько байтов в файле с n-го байта по m-й байт ? C++
как сдвинуть указатель C++
C++ Как сдвинуть указатель на double на 4 байта?
C++ Как сдвинуть указатель файла НА НАЧАЛО уже считанной строки?
Программа сначала перезаписывает 100 байт, на которые указывает указатель, а затем освобождает память C++
C++ Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт
Несколько лишних байт при выводе C++
C++ В функцию передается несколько целых чисел. Создать из всех параметров динамический массив и вернуть указатель
C++ Как прочитать несколько байт из файла с n-го бита
Несколько new на один и тот же указатель C++
C++ Переместить файловый указатель на позицию 220 байт от конца файла
C++ Как передвигать указатель на разное количество байт?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
10.06.2012, 18:36     Как сдвинуть указатель на несколько байт? #2
Может стоит попробовать перегрузить оператор =
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.06.2012, 18:44     Как сдвинуть указатель на несколько байт? #3
Уберите каст к char*
Somebody
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
10.06.2012, 18:51     Как сдвинуть указатель на несколько байт? #4
Цитата Сообщение от soon Посмотреть сообщение
Уберите каст к char*
Тут суть в том, что delta измеряется в байтах, а не в (sizeof _SYSTEM_PROCESSES)'ах.
Вообще можно непосредственно:
C++
1
curr = (_SYSTEM_PROCESSES*)((char*)curr + curr->NextEntryDelta);
Не знаю, может быть, можно и лучше как-то...
TheSameQuest
3 / 3 / 0
Регистрация: 06.04.2009
Сообщений: 36
10.06.2012, 21:07  [ТС]     Как сдвинуть указатель на несколько байт? #5
Цитата Сообщение от Somebody Посмотреть сообщение
Тут суть в том, что delta измеряется в байтах, а не в (sizeof _SYSTEM_PROCESSES)'ах.
Вообще можно непосредственно:
C++
1
curr = (_SYSTEM_PROCESSES*)((char*)curr + curr->NextEntryDelta);
Не знаю, может быть, можно и лучше как-то...
Спасибо! Помогло.
Yandex
Объявления
10.06.2012, 21:07     Как сдвинуть указатель на несколько байт?
Ответ Создать тему
Опции темы

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