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

Битовая операция -> - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
29.05.2011, 16:20     Битовая операция -> #1
Что делает операция ->
К примеру, есть структура:
C++
1
2
3
4
5
struct BIT{ unsigned int cod1:3;
                                               :1;
                       unsigned int cod2 : 3;
                                               : 1;
                      };
То можно делать так:
C++
1
2
3
 BIT* p = (BIT*) &word; // word - типа char
 if (p->cod1 ==  p->cod2)
    ...
Это обращение к участку памяти(или как правильно сказать?)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2011, 16:20     Битовая операция ->
Посмотрите здесь:

C++ битовая маска
Битовая сортировка! C++
C++ битовая маска
64-битовая строка C++
C++ Битовая арифметика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
29.05.2011, 16:22     Битовая операция -> #2
Это доступ к элементу структуры через указатель на структуру.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
29.05.2011, 16:25  [ТС]     Битовая операция -> #3
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Это доступ к элементу структуры через указатель на структуру.
А чем отличается p->cod1 от p.cod1? И можно ли в первом и во втором случае выйти за границу?
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
29.05.2011, 16:29     Битовая операция -> #4
а почему битовая?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
29.05.2011, 16:33  [ТС]     Битовая операция -> #5
Цитата Сообщение от pito211 Посмотреть сообщение
а почему битовая?
Может и не битовая, просто в первые встретился с этим при работе с битами.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
29.05.2011, 16:42     Битовая операция -> #6
Цитата Сообщение от Chelioss Посмотреть сообщение
p->cod1 от p.cod1
в первом случае р это указатель, сначала ты должен выделить память и проинициалировать его с помощью new, прежде чем обращаться к его данным и методам. А потом удалить с помощью delete. То есть ты сам можешь контролировать время жизни объекта. А во втором случае
C++
1
2
3
4
5
6
7
8
{
   BIT p;
    //something code
   {
       //something code
   }
   //something code
} <- здесь будет вызван деструктор для р
то есть ты не можешь во втором случае кнтроировать время жизни объекта.

p.s. Чё нигде не соврал?

Добавлено через 38 секунд
не к битам никакого отношения она не имеет

Добавлено через 5 минут
если тебя смущает такая запись
C++
1
p->cod1
то можно заменить её на
C++
1
(*p).cod1
скобки обязательны, потому что префиксные операторы связаны слабее. А так эти две записи вроде бы эквивалентны
Yandex
Объявления
29.05.2011, 16:42     Битовая операция ->
Ответ Создать тему
Опции темы

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