Консультация № 21737
03.06.2005, 23:56
0.00 руб.
0 1 1
Здравствуйте, эксперты!
Подскажите, пожалуйста, мне в следующей ситуации. Имеется структура MCP_NEWVARIABLE_DATA_EX и следующий код:
MCP_NEWVARIABLE_DATA_EX dmMembers[255];
memset(&dmMembers, 0, sizeof(MCP_NEWVARIABLE_DATA_EX) * 255);
for (int i = 0; i < count; i++)
{
strcpy(dmMembers[i].szVarName, Tags[i+1].NameTag); //Название тега элемента
dmMembers[i].Common.dwVarType = DM_VARTYPE_TEXT_16; //Тип тега элемента
dmMembers[i].Common.dwVarLength = sizeof(dmMembers[i].Common.dwVarType);
}
Мне хотелось бы менять размер массива dmMembers динамически. Пробовал вот так:
MCP_NEWVARIABLE_DATA_EX dmMembers[count]; где count я передаю как аргумент функции. C++ Builder 6 ругается, что «требуется константное выражение». Пробовал объявлять как указатель, но не получается что-то:
MCP_NEWVARIABLE_DATA_EX *dmMembers=new MCP_NEWVARIABLE_DATA_EX[count];
memset(dmMembers, 0, sizeof(MCP_NEWVARIABLE_DATA_EX) * 255);
Ну а дальше как разыменовать указатель? Что-то пробовал – не получается. Может просто не знаю. Подскажите, пожалуйста, как мне сделать динамический размер массива структур?
Заранее благодарю, Эдуард.

Обсуждение

Неизвестный
04.06.2005, 22:54
общий
это ответ
Здравствуйте, Hied!
Используй второй вариант инициализации, при этом работа с массивом остается такой же как если бы он был объявлен не динамически, главное - не за забыть вызвать delete [] dmMembers; после того как массив станет не нужен.
А как ты пробовал "разименовать" указатель?
Форма ответа