Вопрос № 21737: Здравствуйте, эксперты!
Подскажите, пожалуйста, мне в следующей ситуации. Имеется структура MCP_NEWVARIABLE_DATA_EX и следующий код:
MCP_NEWVARIABLE_DATA_EX dmMembers[255];
memset(&dmMembers, 0, sizeof(MCP_NEWVARIABLE_DATA_EX) * 255);<br...
Вопрос № 21.737
Здравствуйте, эксперты!
Подскажите, пожалуйста, мне в следующей ситуации. Имеется структура 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);
Ну а дальше как разыменовать указатель? Что-то пробовал – не получается. Может просто не знаю. Подскажите, пожалуйста, как мне сделать динамический размер массива структур?
Заранее благодарю, Эдуард.
Отправлен: 03.06.2005, 23:56
Вопрос задал: Hied (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Raptor1
Здравствуйте, Hied!
Используй второй вариант инициализации, при этом работа с массивом остается такой же как если бы он был объявлен не динамически, главное - не за забыть вызвать delete [] dmMembers; после того как массив станет не нужен.
А как ты пробовал "разименовать" указатель?
Ответ отправил: Raptor1 (статус: 4-ый класс)
Отправлен: 04.06.2005, 22:54