Обнуление массива в Си

203
28 июля 2019, 08:20

Как правильно обнулить массив? Речь о любых типах массива, будь то символьный, целочисленный, динамический и т.п Если способов несколько то желательно написать как можно больше.

Способ, который изучен мною выглядит как - то так:

char str[100] = {0};

Но я не знаю является ли такой метод обнуления верным, с технической точки зрения и с точки зрения процедурного программирования и объектно-ориентированного программирования.

Answer 1

Если вам нужно обнуление при объявлении - да, это совершенно верный способ. Для глобального массива не нужно и это.

Если нужно обнулить уже имеющийся массив - берите для этого memset. Например,

char * str = malloc(100);
memset(str,0,100);

Но динамический массив можно обнулять и сразу - если выделять calloc:

char * str = calloc(100,1);

P.S. Таких способо всколько угодно. Я написал в основном те, которые С. Но можно и так

char str[100];
std::fill(&str[0],&str[100],0);

или

char str[100];
std::generate(&str[0],&str[100],[](){return 0;});

и еще сотней других способов.

READ ALSO
Символьный массив и перевод из двоичной системы в 10-ую [закрыт]

Символьный массив и перевод из двоичной системы в 10-ую [закрыт]

Есть символьный массив, в которые вводятся числа 0 и 1Нужно с помощью функции перевести элементы символьного массива из двоичной системы...

136
Rapidjson. Чего хочет SetString и как ему угодить?

Rapidjson. Чего хочет SetString и как ему угодить?

Использую RapidjsonВозникла нужда изменять строку

152
На чем сделан интерфейс в программе Kaspersky antivirus?

На чем сделан интерфейс в программе Kaspersky antivirus?

Хочу вас спросить, я недавно увидел на википедии, что Kaspersky написан на c++, скажите пожалуйста, как они создали интерфейс? WinApi, Qt, или что-то другое?

126
Вопрос по сериализации в Java

Вопрос по сериализации в Java

В классе ObjectInput есть метод available(), который, как написано в java docs, возвращает количество байт, доступных для чтения без блокировкиВ классе FileInputStream...

158