предположим, что вы делаете
int ar[50] = {-1};
Теперь вы ожидаете, что эта строка инициализирует все элементы массива с -1, но этого не произойдет. Он установит только первый элемент массива в -1, а остальные в 0. Тогда как memset покажет ожидаемое поведение.
См. Это Инициализация всех элементов массива одним значением по умолчанию в C ++? для получения дополнительной информации.
давайте возьмем пример: -
int arr[5] = { 1, 2 }; // this will initialize to 1,2,0,0,0
int ar[5] = { }; // this will initialize all elements 0
int myArray[10] = {}; // his will also all elements 0 in C++ not in c
Итак, если вы хотите инициализировать определенное c значение для массива, используйте memset ().
Если вы хотите инициализировать все элементы в массиве до 0, используйте
static int myArray[10]; // all elements 0
Потому что объекты с длительностью хранения c будут инициализированы до 0, если инициализатор не указан, и он более переносимый, чем memset ().
Кроме того, int ar[50]={0};
будет бесконечным, потому что он просто инициализирует массив и не имеет окончания, но в memset(arr,0,sizeof(br))
он имеет правильный способ завершения l oop в массивах