Как инициализировать массив до 0 в C? Мне нужен большой массив нулей в C как глобальный. Есть ли способ сделать это, помимо ввода текста char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ }; ? Ответ 1 Глобальные переменные и статические переменные автоматически инициализируются до нуля. Если у вас просто char ZEROARRAY[1024]; в глобальном масштабе это будет все нули во время выполнения. Но на самом деле есть сокращенный синтаксис, если у вас есть локальный массив. Если массив частично инициализирован, элементы, которые не инициализированы, получают значение 0 соответствующего типа. Вы можете написать: char ZEROARRAY[1024] = {0}; Компилятор заполнит неписаные записи нулями. В качестве альтернативы вы можете использовать memset для инициализации массива при запуске программы: memset(ZEROARRAY, 0, 1024); Это было бы полезно, если бы вы изменили его и захотели reset вернуть его ко всем нулям. Ответ 2 Если вы хотите инициализировать массив значениями, отличными от 0, с помощью gcc вы можете сделать: int array[1024] = { [ 0 ... 1023 ] = -1 }; Это расширение GNU C99 Назначенные инициализаторы. В более раннем GCC вам может понадобиться -std=gnu99, чтобы скомпилировать ваш код. Ответ 3 Обычно в c объявленная, но undefined переменная рассматривается как 0. Например, int main(){ int a[500]; for(i=0;i<500;i++) printf("%d",a[i]);// It will print elements with 0 along with a garbage value } Чтобы избежать этой и ручной инициализации: int main(){ int i,a[500]; for (i=0;i<500;i++){ a[i]=0;// set value 0 to all the array index } for (i=0;i<500;i++) printf("%d\n",a[i]); return 0; }
Ответ 1 Глобальные переменные и статические переменные автоматически инициализируются до нуля. Если у вас просто char ZEROARRAY[1024]; в глобальном масштабе это будет все нули во время выполнения. Но на самом деле есть сокращенный синтаксис, если у вас есть локальный массив. Если массив частично инициализирован, элементы, которые не инициализированы, получают значение 0 соответствующего типа. Вы можете написать: char ZEROARRAY[1024] = {0}; Компилятор заполнит неписаные записи нулями. В качестве альтернативы вы можете использовать memset для инициализации массива при запуске программы: memset(ZEROARRAY, 0, 1024); Это было бы полезно, если бы вы изменили его и захотели reset вернуть его ко всем нулям.
Ответ 2 Если вы хотите инициализировать массив значениями, отличными от 0, с помощью gcc вы можете сделать: int array[1024] = { [ 0 ... 1023 ] = -1 }; Это расширение GNU C99 Назначенные инициализаторы. В более раннем GCC вам может понадобиться -std=gnu99, чтобы скомпилировать ваш код.
Ответ 3 Обычно в c объявленная, но undefined переменная рассматривается как 0. Например, int main(){ int a[500]; for(i=0;i<500;i++) printf("%d",a[i]);// It will print elements with 0 along with a garbage value } Чтобы избежать этой и ручной инициализации: int main(){ int i,a[500]; for (i=0;i<500;i++){ a[i]=0;// set value 0 to all the array index } for (i=0;i<500;i++) printf("%d\n",a[i]); return 0; }