Итак, у меня есть массив беззнаковых символов, в настоящее время я пытаюсь написать метод Set (изменяет бит в данном индексе на 1).Лучший способ сделать это - создать маску для всего массива, я бы просто создал маску размером в байт и замаскировал только место индекса в массиве с заданным битом, который пользователь хочет изменить.,Тем не менее, каждый раз, когда я пытаюсь это сделать, либо ничего не происходит с результирующим массивом после ИЛИ с маской из всех 0 с 1 в битовом индексе, либо я получаю ошибку сегмента.Лучшее, что я смог сделать, это изменить правильный бит в первом индексе массива.Как мой код в настоящее время настроен прямо сейчас, я понимаю, почему он только изменяет правильный бит в первом байте массива, но каждая попытка изменить это терпела неудачу, я не думаю, что это должно быть сложно, я просто чувствую, что я 'Я что-то упустил, но страницы чтения и поиски в Google не привели меня никуда.Вот фрагмент моего кода на данный момент ...
void BitArray::Set (unsigned int index)
70 {
71 int spot; // index in barray where
72 // bit to be set is located
73 char mask;
74 if (index < 8)
75 {
76 spot = 0;
77 mask = 1 >> index - 1;
78 }
79 else
80 {
81 int spot = index / 8;
82 mask = 1 << (index - (8*spot) - 1);
83 }
84
85 *barray = *barray | mask;
86 }
Вместо * barray = * barray |маска, я бы интуитивно хотел что-то вроде барри [пятно] = баррей [пятно] |маска;работать.Любая помощь с благодарностью.