unidimensionales - Inicialice una matriz 2D en tiempo de declaración en el lenguaje de programación C
matrices en c ejemplos (7)
@JSB ձոգչ creó la sintaxis para inicializar los valores reales, que coincide perfectamente con el título de la pregunta, lo que me llevó aquí (me interesaba el orden de los índices).
myArray[3][2] = { { 0.1, 0.2 }, { 1.1, 1.2 }, { 2.1, 2.2 } };
El primer índice es el índice de fila es el índice más lento. Esto se conoce como orden C en lugar de orden F (Fortran).
¿Cómo inicializo una matriz 2D con 0s cuando lo declaro?
double myArray[3][12] = ?
El método de pmg es correcto, sin embargo, tenga en cuenta que
double myArray[3][12] = {{}};
Dará el mismo resultado.
Además, tenga en cuenta que
double myArray[3][12] = {{some_number}};
solo funcionará como lo esperas cuando algún número es cero.
Por ejemplo, si tuviera que decir
double myArray[2][3] = {{3.1}};
la matriz no estaría llena de 3.1, en lugar de eso, será
3.1 0.0 0.0
0.0 0.0 0.0
(el primer elemento es el único establecido en el valor especificado, el resto se establece en cero)
Esta pregunta (c inicialización de una matriz normal con un valor predeterminado) tiene más información
El método de pmg funciona mejor, ya que funciona en el concepto de que si inicializa parcialmente un array, el resto de ellos obtendrá el valor predeterminado de cero. de lo contrario, u puede declarar la matriz como una variable global y, si no se inicializa, los elementos de la matriz se establecerán automáticamente en el valor predeterminado (según los compiladores) cero.
Puedes utilizar
double myArray[3][12] = { 0 };
o
double myArray[3][12];
memset(myArray, 0, sizeof(double) * 3 * 12);
Si desea inicializar con ceros, haga lo siguiente:
double myArray[3][12] = { 0 };
Si desea completar valores reales, puede anidar las llaves:
double myArray[3][3] = { { 0.1, 0.2, 0.3 }, { 1.1, 1.2, 1.3 }, { 2.1, 2.2, 2.3 } };
creo que será
double myArray[3][12] = {0}
double myArray[3][12] = {0};
o, si desea evitar la advertencia de gcc "paréntesis faltantes alrededor del inicializador" (la advertencia aparece con -Wall
o, más concretamente, con -Wmissing-braces
)
double myArray[3][12] = {{0}};