Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перебор элементов структуры
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Jenya7
Я все время делаю так
Код
for ( i = 0; i < MAX_ELEMENTS; i++)
{
     array_struct[i].member = i;
}

И тут я подумал, а почему не делать так
Код
while ( &array_struct[i] != ((void*)0) )
{
    array_struct[i].member = i;
    i++;
}

как минимум не надо заморачиваться с MAX_ELEMENTS. что странно я никогда не видел чтоб так делали.

хотя можно и так
Код
for ( i = 0; i < sizeof(array_struct)/sizeof(array_struct[0]); i++)

лучшее враг хорошего.
Сергей Борщ
QUOTE (Jenya7 @ Jul 30 2017, 15:55) *
И тут я подумал, а почему не делать так
CODE
while ( &array_struct[i] != ((void*)0) )
Если стоит задача уничтожить все от начала структуры до конца адресного пространства - вполне рабочее решение. Если такой задачи не стоит - используют sizeof(array_struct)/sizeof(array_struct[0]).
aaarrr
Цитата(Jenya7 @ Jul 30 2017, 15:55) *
И тут я подумал, а почему не делать так
Код
while ( &array_struct[i] != ((void*)0) )
{
     array_struct[i].member = i;
     i++;
}

как минимум не надо заморачиваться с MAX_ELEMENTS. что странно я никогда не видел чтоб так делали.

Странно было бы, если бы так кто-то делал. Откуда вдруг возьмется нулевой адрес?
Jenya7
Цитата(Сергей Борщ @ Jul 30 2017, 19:56) *
Если стоит задача уничтожить все от начала структуры до конца адресного пространства - вполне рабочее решение. Если такой задачи не стоит - используют sizeof(array_struct)/sizeof(array_struct[0]).

а почему уничтожить?
а ну да. тьфу. вот туплю. sm.gif у меня новый пунктик - все минимизировать и генерикозировать. sm.gif
k155la3
Цитата(Jenya7 @ Jul 30 2017, 16:59) *
. . . все минимизировать и генерикозировать. sm.gif

Ну так....
Если исходить из темы (перебор полей структуры), то решения Вам предлагали в "прошлой теме на этуже тему".
Встроенных возможностей для этого в компиляторе нет - я думаю это сделано специально, чтоб не плодить "большой театр" sm.gif
А для тех, кому нужно нечто особенное - есть CPP. Пишите собственноручно итератор по вашему объекту - в том виде,
который нужен Вам, и так, чтбы им могли пользоваться (без йопрст) другие.


ViKo
Не понимаю. Что нужно - перебрать все элементы одной структуры, как написано в заголовке, или перебрать одни и те же элементы в массиве структур, как предлагается
for ( i = 0; i < sizeof(array_struct)/sizeof(array_struct[0]); i++)
и подтверждается в переписке?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.