Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Как проще всего обнулять все элементы массивов разной длины в процессе работы?
Отправлено
Dikoy 01 марта 2008 г. 20:37
После попользования нужно очищать (обнулять) элементы массивов.
У меня их с десяток, и все разной длины. Самый короткий - 2 элемента, самый длинный - 11 элементов.
Вопрос - а что если их все обнулять в общем цикле в 11 проходов? Си ведь не проверяет пределы, то есть пропустит код, где я буду записывать 10 элемент массива, состоящего из двух элементов
Но не перезапишет ли он чего лишнего?..
Ещё вариант, классический {0,0,0}; Но хотелось бы, чтобы компилятор сам адаптировал число элементов при компиляции. По программе у меня везьде sizeof, то есть, если изменил размерность при объявлении, то и во всей программе всё подстроилось. Можно как-то аналогично сделать в случае с {0,0,0}; ?
Делать по циклу на каждый массив очень расточительно ИМХО...
Составить ответ | Вернуться на конференцию
Ответы
- memset — Vit (02.03.2008 00:00:54 77.123.174.155, пустое)
- Скажу по дружески , Си вообще расточительный язык, А касаемо цикла + — Aleksey75 (01.03.2008 20:45:6 213.135.102.130, 290 байт)
- Ответ: а может на асме вставку написать, которая заполнит весь массив элеметов 0-ми? Тупо инкрементируем адрес ячейки и пишем 0. — S (01.03.2008 20:43:54 90.151.97.171, пустое)
- "Ещё вариант, классический {0,0,0}" - не пройдет, это только на стартапе обнуление. "Вопрос - а что если их все обнулять в общем цикле в 11 проходов? " - а кто сказал, что массивы друг за другом лежат и вообще слитно, наверняка выровнены на любой 32 битной архитекуре. Короче так делать низзя. zeromem 11 раз и все. Ну или варианты — DASM (01.03.2008 20:42:2 212.58.192.14, пустое)