Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[С] сложные операции с указателями

40K
15 января 2010 года
himas
31 / / 13.11.2009
есть кусок кода:
Код:
void unpackWideString(BYTE **buf, WCHAR *string, WORD len)
{
    BYTE *tmp = *buf;

    while (len > 1)
    {
        *string = (*tmp++ << 8);
        *string |= *tmp++;

        string++;
        len -= 2;
    }
}


не могу разобраться что именно происходит в этих двух строках
 
Код:
*string = (*tmp++ << 8);
*string |= *tmp++;
9
15 января 2010 года
Lerkin
3.0K / / 25.03.2003
Цитата: himas

не могу разобраться что именно происходит в этих двух строках
 
Код:
*string = (*tmp++ << 8);
*string |= *tmp++;


Собственно, ничего сложного тут нет. Преобразование из BYTE в WCHAR. Сдвигает первое значение из *tmp на 8 бит влево, а следующее значение - присваиванием с бинарным ИЛИ. Все операции с инкрементом, т.к. двигаемся по строке. Таким образом, два значения типа BYTE преобразуем в одно WCHAR.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог