Сдвиги разряда на указателе C?

Это в конечном счете заканчивает тем, что было субъективно. Обсуждение к настоящему времени полезно, но я не думаю, что существует корректный или решающий ответ на это. Много будет зависеть от инструкций по стилю и Ваших потребностей в то время.

, В то время как существуют некоторые различные возможности (действительно ли что-то может быть ПУСТЫМ) с указателем, самым большим практическим различием для выходного параметра является просто синтаксис. Руководство по стилю C++ Google ( https://google.github.io/styleguide/cppguide.html#Reference_Arguments), например, передает под мандат только указатели для выходных параметров и позволяет только ссылки, которые являются константой. Обоснование является одной из удобочитаемости: что-то с синтаксисом значения не должно иметь указателя семантическое значение. Я не предполагаю, что это обязательно правильно или неправильно, но я думаю, что точка здесь - то, что это - вопрос стиля, не правильности.

9
задан MADgood 4 December 2009 в 06:18
поделиться

4 ответа

Если ваш компилятор поддерживает это, заголовок C99 предоставляет типы intptr_t и uintptr_t , которые должны быть достаточно большие, чтобы удерживать указатель в вашей системе, но являются целыми числами, поэтому вы можете манипулировать битами. Это не может быть намного более портативным, чем это, если это то, что вы ищете.

16
ответ дан 4 December 2019 в 07:35
поделиться

Если вам нужно выполнить такого рода манипуляции с указателями, вы можете привести их к intptr_t и uintptr_t , оба из которых можно найти в stdint.h . Они гарантированно будут определены как целочисленный тип, зависящий от платформы, с достаточным количеством бит для хранения указателя.

Там же ptrdiff_t , если вам нужно что-то для хранения разницы между двумя указателями. ]

8
ответ дан 4 December 2019 в 07:35
поделиться

Я думаю, вы пытаетесь решить не ту проблему. Настоящая проблема здесь:

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

Не используйте пустые указатели для хранения битов. Используйте указатели void для хранения указателей. Используйте целые числа без знака для хранения битов.

3
ответ дан 4 December 2019 в 07:35
поделиться

Объявить объединение указателя и битового поля.

2
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: