Инициализировать 2D-массив при объявлении времени на языке программирования C
Как инициализировать 2D-массив с 0s, когда я его объявляю?
double myArray[3][12] = ?
Ответы
Ответ 1
double myArray[3][12] = {0};
или, если вы хотите избежать предупреждения gcc "Отсутствие брекетов вокруг инициализатора" (предупреждение появляется с помощью -Wall
или, более конкретно, -Wmissing-braces
)
double myArray[3][12] = {{0}};
Ответ 2
Если вы хотите инициализировать нулями, вы делаете следующее:
double myArray[3][12] = { 0 };
Если вы хотите заполнить фактические значения, вы можете вставить скобки:
double myArray[3][3] = { { 0.1, 0.2, 0.3 }, { 1.1, 1.2, 1.3 }, { 2.1, 2.2, 2.3 } };
Ответ 3
pmg правильный, однако обратите внимание, что
double myArray[3][12] = {{}};
даст тот же результат.
Кроме того, имейте в виду, что
double myArray[3][12] = {{some_number}};
будет работать только так, как вы ожидаете, когда some_number равен нулю.
Например, если бы я сказал
double myArray[2][3] = {{3.1}};
массив не будет заполнен 3.1, а будет
3.1 0.0 0.0
0.0 0.0 0.0
(первый элемент является единственным, установленным для указанного значения, остальные установлены равным нулю)
Этот вопрос (с инициализацией обычного массива с одним значением по умолчанию) содержит дополнительную информацию
Ответ 4
Я думаю, что это будет
double myArray[3][12] = {0}
Ответ 5
Вы можете использовать
double myArray[3][12] = { 0 };
или
double myArray[3][12];
memset(myArray, 0, sizeof(double) * 3 * 12);
Ответ 6
@JSB ձոգչ придумал синтаксис для инициализации с фактическими значениями, который идеально соответствует заголовку вопроса, который привел меня сюда (меня интересовал порядок индексов).
myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } };
Первым индексом является индекс строки - самый медленный индекс. Это называется порядок C, а не F (Fortran).
Ответ 7
pmg метод работает лучше всего, поскольку он работает над понятием, что если u инициализирует любой массив частично, остальные из них получают значение по умолчанию, равное нулю. else, u может объявить массив как глобальную переменную, а если не инициализирован, элементы массива будут автоматически установлены на значение по умолчанию (в зависимости от компиляторов).