Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 22.11.2009
Сообщений: 61
1

Работа с указателями. Необходимо чтобы при изменении битов в битовом поле менялась и переменная

26.01.2014, 21:14. Просмотров 1066. Ответов 8
Метки нет (Все метки)

Здравствуйте. Прошу помощи в решении следующей задачи:
Имеем переменную int16 и 16-битное битовое поле. Необходимо чтобы при изменении битов в битовом поле менялась и переменная, соответственно при изменении переменной менялись биты битового поля.
Тоесть нужно что-то вроде &BPole=&Flags1.

Битовое поле и переменная объявлены так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct Flags16BitsStruct {
    unsigned int bit0 : 1;
    unsigned int bit1 : 1;
    unsigned int bit2 : 1;
    unsigned int bit3 : 1;
    unsigned int bit4 : 1;
    unsigned int bit5 : 1;
    unsigned int bit6 : 1;
    unsigned int bit7 : 1;
    unsigned int bit8 : 1;
    unsigned int bit9 : 1;
    unsigned int bit10 : 1;
    unsigned int bit11 : 1;
    unsigned int bit12 : 1;
    unsigned int bit13 : 1;
    unsigned int bit14 : 1;
    unsigned int bit15 : 1;
};
 
Flags16BitsStruct Flags1;
int BPole;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2014, 21:14
Ответы с готовыми решениями:

Как добиться, чтобы при изменении шапки на одной веб-странице шапка на всех веб-страницах менялась автоматически?
Подскажите, пожалуйста, как добиться, чтобы, если я что-то меняю в шапке сайта на одной...

Необходимо, чтобы при изменении данных в Combobox, изменялось подключение к DBGrid и прочим компонентам
Такая ситуация: Необходимо чтобы на форме Rychenik при изменении данных в Combobox изменялось...

необходимо чтобы числовое поле меняло цвет при значении кратному 8
Подскажите как сделать, необходимо чтобы числовое поле меняло цвет при значении кратному 8.

Необходимо, чтобы при загрузки формы в текстовое поле выводилась первая строка файла
есть текстовый файл osnova.txt вида: 1 2 3 4 5 6 7 8 9

8
Модератор
Эксперт по электронике
8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
26.01.2014, 21:20 2
union тебе в помощь

Добавлено через 3 минуты
http://ru.wikipedia.org/wiki/О... ура_данных)
что то типа
C++
1
2
3
4
5
union unMyVar
{
Flags16BitsStruct Flags1;
int BPole;
}
т.е место в памяти это будет занимать одно и тоже
а обращаться можешь по разному
C++
1
2
3
unMyVar uv;
uv.BPole=0x0F;
uv.Flag1[10]=1;
1
3 / 3 / 1
Регистрация: 22.11.2009
Сообщений: 61
26.01.2014, 23:08  [ТС] 3
Я не совсем точно выразился, уточню вопрос. Мне нужно связать не просто с переменной, а с элементом массива.
Тоесть допустим есть массив int arr[100]. Мне нужно чтобы битовое поле имело один адрес с заранее заданным элементом этого массива, например arr[31].
0
Модератор
Эксперт по электронике
8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
27.01.2014, 00:02 4
Цитата Сообщение от nikitasnv777 Посмотреть сообщение
Тоесть допустим есть массив int arr[100]. Мне нужно чтобы битовое поле имело один адрес с заранее заданным элементом этого массива, например arr[31].
ну к приведение
C++
1
unMyVar *uv=&arr[31];
Добавлено через 3 минуты
или даже можно так
C++
1
Flags16BitsStruct *Flags1=&arr[31];
Добавлено через 1 минуту
Цитата Сообщение от nikitasnv777 Посмотреть сообщение
Мне нужно связать не просто с переменной, а с элементом массива.
но я бы сделал весь массив union
а то вдруг завтра понадобится другой элемент
памяти это лишней не займет а удобства прибавится
0
3 / 3 / 1
Регистрация: 22.11.2009
Сообщений: 61
27.01.2014, 12:35  [ТС] 5
К сожалению вариант
C++
1
Flags16BitsStruct *Flags1=&arr[31];
не работает. Выдает ошибки:
"инициализация: невозможно преобразовать "short *" в "Flags16BitsStruct *"
"значение типа "short *" нельзя использовать для инициализации сущности типа "Flags16BitsStruct *"
0
Модератор
Эксперт по электронике
8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
27.01.2014, 14:09 6
Лучший ответ Сообщение было отмечено nikitasnv777 как решение

Решение

Цитата Сообщение от nikitasnv777 Посмотреть сообщение
"инициализация: невозможно преобразовать "short *" в "Flags16BitsStruct *"
а так?

C++
1
Flags16BitsStruct *Flags1=(Flags16BitsStruct *)&arr[31];
1
3 / 3 / 1
Регистрация: 22.11.2009
Сообщений: 61
27.01.2014, 14:43  [ТС] 7
Цитата Сообщение от ValeryS Посмотреть сообщение
а так?

C++
1
Flags16BitsStruct *Flags1=(Flags16BitsStruct *)&arr[31];
Спасибо! Работает)
0
Модератор
Эксперт по электронике
8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
27.01.2014, 15:12 8
Цитата Сообщение от nikitasnv777 Посмотреть сообщение
Спасибо! Работает)
О тож
приведение типов называется
гибкая вещь, но опасная
0
3 / 3 / 1
Регистрация: 22.11.2009
Сообщений: 61
27.01.2014, 15:44  [ТС] 9
Цитата Сообщение от ValeryS Посмотреть сообщение
О тож
приведение типов называется
гибкая вещь, но опасная
Да в курсе я. Только делал неправильно (Flags16BitsStruct) вместо (Flags16BitsStruct *) вот и не работало.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2014, 15:44

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

Необходимо, чтобы при вводе в текстовое поле символов слово автоматически дополнялось из Таблици БД
Необходимо, чтобы при вводе в текстовое поле символов слово автоматически дополнялось из Таблици БД...

Для каждой записи в поле необходимо организовать, чтобы при выборе этого параметра открывалась новая БД
Подскажите пожалуйста как реализовать следующее: Имеется база данных. Для каждой записи в поле...

Как сделать, чтобы при нажатии на radio менялась картинка?
как сделать чтобы при нажатии на radio менялось картинка на div ? ...

Как сделать, чтобы при редактировании дата создания записи не менялась?
Как сделать чтобы при редактировании записи дата создания не менялась? public ActionResult...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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