powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Использование указателя в качестве переменной
17 сообщений из 17, страница 1 из 1
Использование указателя в качестве переменной
    #39813939
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажем есть указатель
Код: c#
1.
void * var_ptr;


я ведь могу инициализировать его каким нибудь адресом
Код: c#
1.
var_ptr= (int *) 100;


и потом использовать в арифметических выражениях
Код: c#
1.
2.
int val1, val2;
val1 = val2 +  (int)var_ptr;


это ведь не нарушит ничего в программе?
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39813966
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой изврат (((

Работать будет, но потом сам забудешь про него и будешь долго косяк в коде искать.

Используй union, его для того и придумали чтобы разные типы в одной и той же памяти хранить.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39813972
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TРаботать будет
А что будет при переходе с архитектуры 32 на 64 бита?
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39813980
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Dima TРаботать будет
А что будет при переходе с архитектуры 32 на 64 бита?
Ничего. Он приводит к int, а это везде 32 бита.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814037
qasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Talex55555пропущено...

А что будет при переходе с архитектуры 32 на 64 бита?
Ничего. Он приводит к int, а это везде 32 бита.

Вы ошиблись. Размер переменной типа int далеко не везде равен 32 битам.
И указатели разных размеров бывают...
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814053
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TКакой изврат (((

Работать будет, но потом сам забудешь про него и будешь долго косяк в коде искать.

Используй union, его для того и придумали чтобы разные типы в одной и той же памяти хранить.
в смысле? так?
Код: c#
1.
2.
3.
4.
5.
typedef union
{
    void *ptr;
    int val;
} int_or_ptr_t;
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814055
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7в смысле? так?
Да
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814071
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tjenya7в смысле? так?
Да
спасибо. на этом варианте остановлюсь.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814088
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jenya7Dima Tпропущено...

Да
спасибо. на этом варианте остановлюсь.
более того, я же могу сделать так
Код: c#
1.
2.
3.
4.
5.
6.
7.
typedef union
{
    uint_8_t *ptr;
    int16_t *ptr;
    int32_t *ptr;
    int val;
} int_or_ptr_t;


и тогда мне не нужен войд. и не нужно создавать где то переменную о типе данных.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814099
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7 и не нужно создавать где то переменную о типе данных.
Нужно. Проблема не исчезла. При чтении по указателю тебе неизвестно сколько байт читать.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814102
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tjenya7 и не нужно создавать где то переменную о типе данных.
Нужно. Проблема не исчезла. При чтении по указателю тебе неизвестно сколько байт читать.
и нет способа знать где в юнион был оверлей?
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814119
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Dima Tпропущено...

Нужно. Проблема не исчезла. При чтении по указателю тебе неизвестно сколько байт читать.
и нет способа знать где в юнион был оверлей?
Нет.
union это просто способ написать код по-человечески вместо явного приведения к нужному типу, как ты это сделал изначально.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814162
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня как-то была идея как сэкономить дочерних на узлах бинарного дерева.
Чтоб поля использовались либо как указатель на дочерний узел. Либо как value.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct BinaryNode {
    union {
       value_type value; // Main use-case
       value_ptr_type *valuePtr; // Optional use-case when value is larger that 2x pointers
       struct {
          BinaryNode *left;
          BinaryNode *right;
       } // Optional structure if else
    }
}


Но еще ввести какой-то признак чтоб различать что лежит не узловая вершина а листовая. Только не булеву переменную
а что-то более компактное. Пока не придумал как. Может на диапазонах адресов завязаться.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814167
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Базируется на предположении что 90% данных в бинарном дереве (если это серия чисел или короткие строки)
не превышают параграфа (128 бит или 16 байт).
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814296
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7я ведь могу инициализировать его каким нибудь адресом
Да.

jenya7и потом использовать в арифметических выражениях
Да.

jenya7это ведь не нарушит ничего в программе?
Это смотря как написать программу. Вероятность ошибки при таких манипуляциях довольно велика. Если опишешь задачу, которую хочешь решить таким образом - возможно, получишь толковый совет, как её стоит решать на самом деле.
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814452
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7...и тогда мне не нужен войд. и не нужно создавать где то переменную о типе данных.

Понимаете в чём дело... Язык это способ формализации для железки. Первичен не он. Первична логика.

ИМХО: Вы не правильно ставите вопрос и посему все вынуждены отвечать на механику языка, а не на логически стройные-красивые-избитые-устоявшиеся алгоритмы.

Не обязательно выкладывать весь Ваш гимор. Достаточно выкинуть воду из проекта выделить суть и сосредоточиться на логике. А механика она приложиться - поверьте.

ЗЫ
Я так понимаешь, что Вам строго си (типо под мк вояете)? Если так - то выделите асинхронные глаголы, синхронную обработку, какую периферию юзаете и т.д.. оно так быстрее пойдёт...

(круглый)
...
Рейтинг: 0 / 0
Использование указателя в качестве переменной
    #39814663
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kolobok0, softwarer
да просто хочу съэкономить на члене в структуре. пишу под микроконтролер. ресурсы ограниченны.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Использование указателя в качестве переменной
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]