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

Создание динамического массива - C++

Восстановить пароль Регистрация
 
ht1515
шарпопочитатель
 Аватар для ht1515
58 / 25 / 1
Регистрация: 31.01.2010
Сообщений: 889
27.09.2011, 10:33     Создание динамического массива #1
C++
1
2
3
const int Num=5; 
const int SIZE=4096 * Num;
SHORT Buf[2][SIZE];
как такое заменить, если Num- инициализируется при загрузке программы, читается из файла.

C++
1
2
3
int Num; 
int SIZE=4096 * Num;
SHORT* Buf = new SHORT[2][SIZE];
тут тоже требуется что бы SIZE был константой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2011, 10:33     Создание динамического массива
Посмотрите здесь:

Создание динамического массива C++
C++ Создание динамического массива
Создание динамического массива C++
C++ Создание динамического массива
Создание динамического массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
27.09.2011, 10:40     Создание динамического массива #2
ht1515, смотри код
C++
1
2
3
4
5
6
7
8
int iRows, iCols;//Понятное дело до выделения памяти нужен их инит
SHORT ** Buf = new SHORT * [iRows];//Память под массив указателей размером iRows
for(int i = 0,j; i < Rows;i++)
{
      Buf[i] = new SHORT[iCols];//Каждому указателю память под вектор размером iCols
      for(j = 0; j < Cols; j++)
              Buf[i][j] = i + j;//От балды инициализирую чтобы показать где инит можно вставить
}
ht1515
шарпопочитатель
 Аватар для ht1515
58 / 25 / 1
Регистрация: 31.01.2010
Сообщений: 889
27.09.2011, 11:14  [ТС]     Создание динамического массива #3
-=ЮрА=-, а Rows и Cols это чего? )

Добавлено через 6 минут
C++
1
2
3
const int Num=5; 
const int SIZE=4096 * Num;
SHORT Buf[2][SIZE];
то есть:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int iRows, iCols;
SHORT ** Buf = new SHORT * [iRows];
 
void InitArr(){
for(int i = 0,j; i < 2;i++)
{
      Buf[i] = new SHORT[iCols];
      for(j = 0; j < iCols; j++) Buf[i][j] = 0;
}
}
 
void main(){
InitArr();
if (!ReadFile(ModuleHandle, Buf[0], sizeof(Buf[0]), NULL,
/*__inout_opt  LPOVERLAPPED lpOverlapped*/) && (GetLastError() != ERROR_IO_PENDING)) return;        
}
а вот такая функция windows

C++
1
2
3
4
5
6
7
BOOL WINAPI ReadFile(
  __in         HANDLE hFile,
  __out        LPVOID lpBuffer,
  __in         DWORD nNumberOfBytesToRead,
  __out_opt    LPDWORD lpNumberOfBytesRead,
  __inout_opt  LPOVERLAPPED lpOverlapped
);
она же по логие одинаково скушать должна и статический и динамический массив же?

Добавлено через 1 минуту
статический она норм съедает. вот такой динамический чем-то отличается с точки зрения с++ чем-то?

Добавлено через 18 минут
и ещё такой вопрос:
C++
1
extern SHORT ** Buf = new SHORT * [2];
имеет место быть? Так пишут?

И ещё удалять массив из памяти так:
C++
1
2
3
4
for (int i=0; i!=SIZE; i++)
delete[] Buf[i];
 
delete Buf;
?
-=ЮрА=-
Заблокирован
Автор FAQ
27.09.2011, 11:45     Создание динамического массива #4
Цитата Сообщение от ht1515 Посмотреть сообщение
а Rows и Cols это чего?
- необходимое число строк и столбцов, какое требуется такое и вбивай, если массив должен брать инит из файла, тогда столбцы нужно считать по числу цифр в строке ну а iRows - число строк в файле
Yandex
Объявления
27.09.2011, 11:45     Создание динамического массива
Ответ Создать тему
Опции темы

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