Мне нужен большой массив нулей в C как глобальный. Есть ли способ сделать это, помимо ввода текста
char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
?
Мне нужен большой массив нулей в C как глобальный. Есть ли способ сделать это, помимо ввода текста
char ZEROARRAY[1024] = {0, 0, 0, /* ... 1021 more times... */ };
?
Глобальные переменные и статические переменные автоматически инициализируются до нуля. Если у вас просто
char ZEROARRAY[1024];
в глобальном масштабе это будет все нули во время выполнения. Но на самом деле есть сокращенный синтаксис, если у вас есть локальный массив. Если массив частично инициализирован, элементы, которые не инициализированы, получают значение 0 соответствующего типа. Вы можете написать:
char ZEROARRAY[1024] = {0};
Компилятор заполнит неписаные записи нулями. В качестве альтернативы вы можете использовать memset
для инициализации массива при запуске программы:
memset(ZEROARRAY, 0, 1024);
Это было бы полезно, если бы вы изменили его и захотели reset вернуть его ко всем нулям.
Если вы хотите инициализировать массив значениями, отличными от 0, с помощью gcc
вы можете сделать:
int array[1024] = { [ 0 ... 1023 ] = -1 };
Это расширение GNU C99 Назначенные инициализаторы. В более раннем GCC вам может понадобиться -std=gnu99
, чтобы скомпилировать ваш код.
Обычно в 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;
}