Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/64: Рейтинг темы: голосов - 64, средняя оценка - 4.66
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429

Вопрос про тип данных BYTE

28.07.2011, 11:40. Показов 12393. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Возможно тупой вопрос, но впервый раз сталкиваюсь с этим.
BYTE *bf;
bf[1258] = 78*10/56;

Как такое вообще возможно?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2011, 11:40
Ответы с готовыми решениями:

Нельзя преобразовать тип function(a: byte;b: byte): byte к integer (Списки)
Создать список из целых чисел.Поменять в списке местами максимальный и минимальный элементы Проблемы c процедурами Pos и Chang: пос...

Преобразовать тип данных char[] -> wchar -> BYTE для структуры DATA_BLOB crypt32.dll
Помогите, пожалуйста, написать за меня: 1) преобразование аргумента ком. строки -> в Unicode (какой не знаю): пытаюсь перевести код,...

Какой функцией можно преобразовать тип byte в тип string и наоборот?
Вот моя проблема, у меня конченое действие будет выводить число в 10 С.С и в типе byte, а мне надо ее еще перевести в 2 С.С , но при...

31
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
28.07.2011, 12:20
никак.

Добавлено через 2 минуты
объявили указатель. память не выделили. чтото записали кудато.
2
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
28.07.2011, 12:28  [ТС]
Так вот в том-то и дело объявлял же я не массив а указатель на область памяти, так вот почему он разрешает обращение к себе как массиву?
1
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
28.07.2011, 12:38
Книжку почитай!! и поймешь какое значение будет иметь указатель после его создания!

Добавлено через 49 секунд
Так делать нельзя! это один из моментов из за которого будет утечка памяти
2
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
28.07.2011, 12:44
Цитата Сообщение от pomkalk Посмотреть сообщение
Так делать нельзя!
согласен
Цитата Сообщение от pomkalk Посмотреть сообщение
это один из моментов из за которого будет утечка памяти
с чего утечка то??
память не выделялась
Несанкционированый доступ пожалуйста
причем винда скорее всего выкинет исключение , а какой-нибудь ДОС может смело поменять в памяти значение
к чему это приведет одному Биллу известно
2
28.07.2011, 12:47

Не по теме:

Ну а зачем тогда тему создал!!

2
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
28.07.2011, 12:48  [ТС]
Во вложении пример работы с bass.dll
Он пишет с микрофона звук и вывод гистограмму.
Так вот там в фунции void CALLBACK UpdateSpectrum(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)

при описании точек для гистограммы ясно дается именно такой пример:
specbuf[y*SPECWIDTH+x]=abs(y-SPECHEIGHT/2)*2+1;
specbuf имеет тип BYTE т.е. BYTE *specbuf;
Вложения
Тип файла: rar livespec.rar (103.2 Кб, 27 просмотров)
1
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
28.07.2011, 12:49
Цитата Сообщение от radiohobbyt Посмотреть сообщение
объявили указатель.
ну и
Цитата Сообщение от radiohobbyt Посмотреть сообщение
память не выделили.
а ты такой записи не видел
C
1
2
3
BYTE *bf=&A;// берем адрес переменной
 
BYTE *bf=0x4567 // записываем конкретный адрес
2
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
28.07.2011, 12:51
Ну ты объявил указатель и при этом не указал на что он собственно указывает. Тип указатель компилятору известен поэтому он может попытаться обратится к элементу массива данного типа.
Вообще указатель - это просто адрес чего-то в памяти и до момента выполнения неизвесно что там будет (кроме типа конечно) - один элемент или массив таких элементов.
2
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
28.07.2011, 12:54  [ТС]
Цитата Сообщение от SalterOk Посмотреть сообщение
Ну ты объявил указатель и при этом не указал на что он собственно указывает. Тип указатель компилятору известен поэтому он может попытаться обратится к элементу массива данного типа.
Вообще указатель - это просто адрес чего-то в памяти и до момента выполнения неизвесно что там будет (кроме типа конечно) - один элемент или массив таких элементов.
Хорошо допустим там таким образом я записал массив, но имея маломальскую логику я могу представить что массив состоит из конечного числа элементов начиная с 0.

Имея тот пример выше как вообще можно запомнить что куда там записалось? Ведь по факту заполняются ячейки этого массива хаотично практически
1
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
28.07.2011, 13:00
Цитата Сообщение от mibin Посмотреть сообщение
specbuf[y*SPECWIDTH+x]=abs(y-SPECHEIGHT/2)*2+1;
specbuf имеет тип BYTE т.е. BYTE *specbuf;
ну и что тебя смущает
скорее всего данные с микрофона идут побайтого а заполнить нужно допустим какую либо структуру(в памяти то все равно байты)
например так
C
1
2
3
4
5
6
7
8
9
10
11
12
struct _blabla
{
int a;
int b;
int c;
double d;
}BlaBla;
 
BYTE * r=&BlaBla;
 
for(int i=0; i<sizeof(BlaBla);i++)
  r[i]=value;
Добавлено через 3 минуты
Цитата Сообщение от mibin Посмотреть сообщение
Ведь по факту заполняются ячейки этого массива хаотично практически
Нет
в приведенном мной примере
4 байта запишут a
следующие
4 байта запишут b
следующие
4 байта запишут c
следующие
10 байта запишут d
1
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
28.07.2011, 13:01  [ТС]
Ты хочешь сказать что он заполняет структуру напрямую обращаясь к ее ячейкам памяти? Но нельзя же заранее знать в какой ячейке памяти находиться структура...хотя смотря сам код я могу это предположить потому что в последствии для вывода изображения данный specbuf не используется...хм..и что же он тогда заполняет...и как он узнает что именно ТУДА?

Добавлено через 49 секунд
Вот пример, если структура и есть то она системная в коде никак не фигурирует открыто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    for (x = 0; x < SPECWIDTH; x++) {
        int v = (32767 - buf[x]) * SPECHEIGHT / 65536;
        // invert and scale to fit display
        if (!x)
            y = v;
        do { // draw line from previous sample...
            if (y < v)
                y++;
            else if (y > v)
                y--;
            specbuf[y * SPECWIDTH + x] = abs(y - SPECHEIGHT / 2) * 2 + 1;
        }
        while (y != v);
    }
0
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
28.07.2011, 13:02
Цитата Сообщение от mibin Посмотреть сообщение
при описании точек для гистограммы ясно дается именно такой пример:
specbuf[y*SPECWIDTH+x]=abs(y-SPECHEIGHT/2)*2+1;
specbuf имеет тип BYTE т.е. BYTE *specbuf;
а с чего ты взял что указатель объявлен именно так а не так(к примеру)
BYTE *specbuf = new BYTE[2048];
или ему не присвоен адрес уже существующего массива?
1
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
28.07.2011, 13:04  [ТС]
Ну потому что у меня есть пример и все инициализации данной переменной я проследил.

Добавлено через 58 секунд
Максимум что там есть это фукнция
memset(specbuf,0,SPECWIDTH*SPECHEIGHT);
но она используется только если кликнуть по форме мышой и говориться что это очистка дисплея
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
28.07.2011, 13:07
Цитата Сообщение от mibin Посмотреть сообщение
Ты хочешь сказать что он заполняет структуру напрямую обращаясь к ее ячейкам памяти? Но нельзя же заранее знать в какой ячейке памяти находиться структура..
а это что??
Цитата Сообщение от ValeryS Посмотреть сообщение
BYTE * r=&BlaBla;
1
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
28.07.2011, 13:09  [ТС]
Я имел ввиду имея только объявление указателя без присвоения

Добавлено через 28 секунд
кажется я начинаю понимать, вся соль кажись в функции memset
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
28.07.2011, 13:10
Цитата Сообщение от mibin Посмотреть сообщение
memset(specbuf,0,SPECWIDTH*SPECHEIGHT);
заполнение памяти 0

Цитата Сообщение от mibin Посмотреть сообщение
говориться что это очистка дисплея
значит
Цитата Сообщение от SalterOk Посмотреть сообщение
specbuf
указывает на буфер дисплея
1
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
28.07.2011, 13:10
Цитата Сообщение от mibin Посмотреть сообщение
Ведь по факту заполняются ячейки этого массива хаотично практически
а помоему они как раз последовательно заполняются!
1
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
28.07.2011, 13:10
ООооххх....когда ты создаешь указатель, он всегда на что то указывает!! всегда!!
По этому, ты создал указатель, который указывает на определенный блок памяти(а память у нас и так как большой массив), и ты туда что то записываешь, или что то делаешь!!! по этому у тебя что то получается, и тут уже могут быть утечки памяти!!
1
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,863
28.07.2011, 13:11
Цитата Сообщение от mibin Посмотреть сообщение
Я имел ввиду имея только объявление указателя без присвоения
не может такого быть (если программа рабочая)
пройди в отладчике и посмотри где присваивается адресс
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.07.2011, 13:11
Помогаю со студенческими работами здесь

Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR?
Вроде давно занимаюсь программированием на С++, но встала проблема... Есть некий массив переменных имеющих 8 битный размер... без знака...

Вопрос про базы данных
Добрый день, в программировании уже несколько лет, но никогда не работал с базами данных. Честно сказать несколько удивила простота...

Вопрос про базу данных...
Как присвоить memo (текст) первую строчку из базы данных?

Вопрос про хранение данных
Доброго времени суток. Такой вопрос: при создании игры нужно хранить большое количество данных. Как их лучше хранить? В 2-х 3-х мерных...

Про СКД - Составной тип данных в регистре сведений ?
Есть период. регсведений, в нем разные данные- числа, строки, даты и ссылки. Когда с помощью СКД пытаюсь вывести эти данные то выводятся...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru