|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2013, 02:16 | #1 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Сдвиг указателя на желаемое количиство байт
Доброго дня.
Встроенные операции над указателями жестко привязаны к типу указателя, а как грамотно сдвинуть указатель на произвольное количество байт? Сразу могут прийти варианты: Код:
Последний раз редактировалось 220Volt; 20.12.2013 в 02:19. |
20.12.2013, 08:46 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Ну если подходить так строго, то никак - размер char не определен, но его можно узнать из CHAR_BIT. Раз так уж важно, можете сделать так:
((char*) ptr) + (sizeof(double) / sizeof(char)) Второй вариант, вынести все это в функцию, которая может быть имплементирована по разному на разных архитектурах. Я думаю надо будет очень постараться, чтоб найти С компилятор и/или архитектуру, где char != 8 бит Массив - не всегда самый удачный способ хранения данных. Сделайте массив указателей а указатель может быть на любого наследника. Даже в базах данных таблицы содержат "одинаковые" структуры. |
20.12.2013, 13:31 | #3 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Спасибо.
Я покопался в справочнике вот что нашел http://www.cplusplus.com/reference/cstdint/: Код:
Код:
|
20.12.2013, 13:52 | #4 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
|
20.12.2013, 13:57 | #5 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
<тут было что-то страшное>
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 20.12.2013 в 14:08. |
20.12.2013, 15:53 | #6 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
А зачем это нужно?
Недавно заводил тему http://www.programmersforum.ru/showthread.php?t=251137. Так вот такое решение у меня получилось: Код:
Последний раз редактировалось 220Volt; 21.12.2013 в 01:02. Причина: Добавил static_assert |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функция изменяет старший байт числа на заданное значение,не изменяя младший байт ( C++ ) | Любимый_1 | Помощь студентам | 3 | 07.10.2013 16:42 |
Копирование указателя С++ | Alex1991 | Помощь студентам | 2 | 24.04.2011 04:00 |
c++ возврат указателя из функции | Neolit1819 | Помощь студентам | 6 | 28.03.2011 15:37 |
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) | Beren42 | Помощь студентам | 0 | 15.12.2010 20:32 |