multidimensional jagged examples create bidimensional array c arrays initialization

jagged - multidimensional array c++



inicializar una matriz C multidimensional de tamaƱo variable a cero (5)

Quiero inicializar una matriz bidimensional de tamaño variable a cero. Sé que se puede hacer para una matriz de tamaño fijo:

int myarray[10][10] = {0};

pero no está funcionando si hago esto:

int i = 10; int j = 10; int myarray[i][j] = {0};

¿Hay una forma de una línea de hacer esto o tengo que recorrer cada miembro de la matriz?

Gracias


Las matrices bidimensionales de tamaño variable no se admiten en C. Hay que arreglar una dimensión (no recuerdo si es la primera o la segunda). Recomiendo pasar sobre ella una vez que está definida.


No puede crear una matriz estática utilizando variables no constantes. Intente usar la asignación dinámica:

int i = 10; int j = 10; size_t nbytes = i*j*sizeof(int); int* myarray = (int*) malloc(nbytes); memset(myarray,0,nbytes);


Si obtiene un puntero a su estructura de datos, puede probar memset .


Estándar en línea C99 (proyecto n1256) , sección 6.7.8, párrafo 3:

El tipo de entidad que se inicializará será una matriz de tamaño desconocido o un tipo de objeto que no sea de tipo de matriz de longitud variable.

Énfasis mío

Como todos han dicho, tu mejor memset() es usar memset() .


No puede inicializarlo con un inicializador, pero puede memset() en 0.

#include <string.h> int main(void) { int a = 13, b = 42; int m[a][b]; memset(m, 0, sizeof m); return 0; }

Nota: esto es C99 . En C89 la declaración de m ( int m[a][b]; ) es un error.