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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
wizzzi
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 12
#1

Подскажите, что означает следующая запись - C++

01.07.2012, 11:44. Просмотров 709. Ответов 3
Метки нет (Все метки)

C++
1
WAVHEADER *head = (WAVHEADER*)buff;
, где
WAVHEADER - структура.
C++
1
BYTE *buff = NULL;
- нулевой указатель.
C++
1
DWORD size = sizeof(WAVHEADER).
- размер структуры.
C++
1
buff = new BYTE[size];
- динамическое распределение
C++
1
WAVHEADER *head = (WAVHEADER*)buff;
(в левой части указатель на структуру, а в правой я не могу понять, что такое?)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 11:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите, что означает следующая запись (C++):

Что означает следующая строчка? - C++
Подскажите пожалуйста, что означает строчка: byte szch; ...//тут запихиваем в szch и szch какие-то цифры short...

Что означает запись в скобках и что возвращает return - C++
Всем привет! Начал читать книгу BecomeAnXcoder и тут появился вопрос. В пример приведен такой код circleArea(float theRadius) //(1) ...

Подскажите что означает /= - C++
Начал читать книгу для начинающих по с++, в одном из примеров встретил код вида Mxx/=N; Mxy/=N; My/=N; Mx/=N; Наверное, /=...

Что означает запись? - C++
for (; j < k; j++) - Что означает эта строчка? Интересует именно символ ";" сразу после скобки

Что означает запись - C++
Привет. Верна ли, и если да, то что значит данная запись и для чего она используется: bool found = false; found = winner(board) ==...

Что означает запись ? - C++
Что означает(подразумевает) запись: class Datb:public Data{ public:Datb(int m, int x):Data(m){ } Полный код программы: #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.07.2012, 11:53 #2
массив данных размером,как раз с твою структуру
хотелось бы увидеть код,где это используется,а то мало что понятно
wizzzi
0 / 0 / 0
Регистрация: 21.06.2012
Сообщений: 12
01.07.2012, 12:06  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <windows.h>
#include <math.h>
#include <Mmsystem.h>
#include <Mmreg.h>
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#pragma comment(lib, "winmm.lib")
 
struct WAVHEADER
{
    FOURCC  sigRIFF;     // должно быть равно "RIFF"
    DWORD   sizeRIFFch;  // размер чанка RIFF
 
    FOURCC  sigWAVE;     // должно быть равно "WAVE"
 
    FOURCC  sigFMT;      // должно быть равно "fmt "
    DWORD   sizeFMTch;   // размер чанка FMT
    PCMWAVEFORMAT pcmwf;
 
    FOURCC  sigDATA;     // должно быть равно "data"
    DWORD   sizeDATAch;  // размер data-чанка
};
 
DWORD dwFrequency = 1;
BYTE *buff = NULL;
 
void Play(){
  if (dwFrequency>44100)
    return;
 
  // длина дорожки в байтах
  DWORD numSamples = 44100 / dwFrequency;
 
  // выделяем память под дорожку - в байтах!
  DWORD size = sizeof(WAVHEADER) + numSamples * sizeof(SHORT);
  //  размер структуры + количество выборок
  buff = new BYTE[size];
 
 
  WAVHEADER *head = (WAVHEADER*)buff;
 
 
  head->sigRIFF = mmioFOURCC('R','I', 'F', 'F');
  head->sigWAVE = mmioFOURCC('W','A', 'V', 'E');
  head->sigFMT = mmioFOURCC('f', 'm', 't', ' ');
  head->sigDATA = mmioFOURCC('d', 'a', 't', 'a');
 
  head->sizeRIFFch = size - 8; //8 байт - заголовок файла
  head->sizeFMTch = sizeof(PCMWAVEFORMAT);
  head->sizeDATAch = numSamples * sizeof(SHORT);
 
  head->pcmwf.wf.wFormatTag = WAVE_FORMAT_PCM;
  head->pcmwf.wf.nChannels = 1;                 //   моно
  head->pcmwf.wf.nSamplesPerSec = 44100;        // частота дискретизации
  head->pcmwf.wBitsPerSample = 16;           // разрядность 16 бит
  head->pcmwf.wf.nBlockAlign = (head->pcmwf.wBitsPerSample)*(head->pcmwf.wf.nChannels)/8;        // 2 байта для представления одного отсчета
  head->pcmwf.wf.nAvgBytesPerSec = (head->pcmwf.wf.nSamplesPerSec)*(head->pcmwf.wf.nBlockAlign);    // скорость передачи данных, байт/с
 
 
  // заполняем дорожку периодом синуса
  SHORT *samples = (SHORT*)(head + 1);
    for(int i = 0; i < numSamples; i++)
{samples[i]=(20000*sin(2*3.14159265358*
(i)/(numSamples)));
cout << "numSamples " << samples[i] << endl;}
 
   // воспроизводим звук
  PlaySound((LPCSTR)buff,0,SND_ASYNC|SND_LOOP|SND_MEMORY);
}
 
void Stop()
{
  // станавливаем звук по нажатию кнопки
  PlaySound(0, 0, SND_ASYNC);
}
 
 
void main(void){
  Play();
 
  getch();
 
  Stop();
 
  // тоже по-хорошему не нужно забывать ;)
 
}
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.07.2012, 12:46 #4
Преобразование типа из BYTE * в WAVHEADER *
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2012, 12:46
Привет! Вот еще темы с ответами:

Что означает эта запись? - C++
Что означает эта запись? и можно ли ее как нибудь заменить или запихнуть в подключаемую библиотеку? C++ Visual Stdio 2010 typedef...

Что означает данная запись - C++
Добрый день Имеется простой класс Class Test { public: unsigned a : 1; unsigned b : 1; };

Объяснить что означает запись if (i % 10 == 0) - C++
Объясните, пожалуйста, что означает эта запись простыми словами

Что означает запись 1.8e307? - C++
Всем добрый день! Подскажите пожалуйста, как можно назвать на c++ это число? 1.8e307 Это типо максимально возможное?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.07.2012, 12:46
Ответ Создать тему
Опции темы

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