обнулить массив в C
Как наиболее правильно обнулить массив данных в C? Чтобы был обнулен не только первый элемент, но достоверно стерлись и все остальные.
anonymous
08.06.03 00:22:30 MSD
Re: обнулить массив в C
char a[100]; memset (a, 0, sizeof(a));
anonymous
( 08.06.03 01:00:49 MSD )
Re: обнулить массив в C
и не забывай продвинутые виндовуз компиляторы
при оптимизации просто
пропускают оператор memset(a,0,sizeof(a));
что делает gcc Хз )
PS: опять все приходиться делать вручную (((
Aleks_IZA ★
( 08.06.03 08:32:55 MSD )
Re: обнулить массив в C
С какого это перепоя? Если действительно есть такой компилятор, то это его глюк, а не оптимизация. Такое ощущение, что ты спутал 2 вещи:
— Просто выкинуть нафиг вызов memset.
— Вместо вызова memset использовать встроенный код (rep stosd или типа того). Т.е. по сути — тот же memset, но без накладных расходов на push+call+ret+add.
nobody ★★
( 08.06.03 15:07:00 MSD )
Re: обнулить массив в C
А ещё есть bzero. (может оно эфективнее будет)
anonymous
( 09.06.03 07:55:49 MSD )
Re: обнулить массив в C
an$ man bzero [skip] CONFORMING TO 4.3BSD. This function is deprecated -- use memset in new programs. В переводе с англ. это означает, что разработчики glibc рекомендуют использовать в новых программах memset вместо bzero.
nobody ★★
( 09.06.03 14:10:55 MSD )
Re: обнулить массив в C
char a[100]=; Работает классно! И не надо выдрючиваться.
kkk ★★
( 11.06.03 09:43:43 MSD )

Re: обнулить массив в C
char a[100]=; Работает классно! И не надо выдрючиваться.
kkk ★★
( 11.06.03 09:43:50 MSD )
Re: обнулить массив в C
2 kkk.
Такое ощущение, что в этом случае обнулится только a[0].
И потом, это работает только один раз. После того, как ты чего-то записал в `a’, а затем решил его обнулить, `a=;’ вообще не прокатит.
nobody ★★
( 11.06.03 13:14:03 MSD )
Re: обнулить массив в C
2nobody:
kkk прав, при инициализации массива, элементам «не хватившим » значений — инициализируются неявно \0. Для случая
char a[100] = < 0 >
a[0] — явно инициализируется 0-м
a[1]-a[99] — неявно инициализируются 0-м
ps: аналогичным образом можно инициализировать и структуры.
pss: все это есть в стандарте.
anonymous
( 18.06.03 02:28:30 MSD )
Ответ на: Re: обнулить массив в C от anonymous 18.06.03 02:28:30 MSD
Re: Re: обнулить массив в C
>2nobody: >kkk прав, при инициализации массива, элементам «не хватившим » >значений — инициализируются неявно \0. Для случая >char a[100] = < 0 >>a[0] — явно инициализируется 0-м >a[1]-a[99] — неявно инициализируются 0-м
>ps: аналогичным образом можно инициализировать и структуры. >pss: все это есть в стандарте.
——————— все что выше вранье. и зависит от компилятора но не факт покажы где есть в стандарте. используй memset
Курсы javascript
рони, я тоже об этом подумал, но неоправдано. Во-первых если нужен 0 то обычно именно числом, а не текстом, а во-вторых цикл и то короче выходит.
__________________
04.08.2014, 09:25
Регистрация: 04.07.2014
Сообщений: 51
Массив не имеет определенных рамок (число элементов колеблется), но мне вместо ‘undefined’ нужно чтобы нули были..
То есть если взять к примеру другой язык программирования, тот же c++, то переменная при объявлении равна нулю, а не ‘undefined’.
Очистить массив в JavaScript
В этом посте мы обсудим, как очистить массив в JavaScript.
1. Использование [] оператор
Самое простое решение — установить переменную, содержащую массив, в новый пустой массив с помощью конструктора массива или литеральной записи. Это прекрасно работает, если у нас нет других ссылок на исходный массив. Тем не менее, он не очищает существующие ссылки на исходный массив, поскольку исходный массив остается неизменным.
Следующий пример кода демонстрирует это поведение:
Тема: Способы сброса массива
![]()
Способы сброса массива
Помнится, в одном из языков (то ли JavaScript, то ли C#) была возможность сброса всех элементов целочисленного/булевого массива путем задания переменной length (длины массива) равной нулю. В КДС этот способ не сработает, потому как такой переменной тут нет.
Какие еще есть способы сбросить массив? Исключая цикл, конечно.
