Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: JonaLamper en 26 Febrero 2016, 16:48 pm



Título: Inicializar una matriz
Publicado por: JonaLamper en 26 Febrero 2016, 16:48 pm
Buenas,

Tengo que inicializar una matriz con un tamaño DIM. Este DIM se lee de un archivo y me dicen que debe ser constante. Entonces...  ¿cómo demonios hago eso? Porque si necesito que el programa que compile para leer el archivo, ¿cómo voy a establecer esa constante con el valor leído?  :huh:


Título: Re: Inicializar una matriz
Publicado por: BlackM4ster en 26 Febrero 2016, 16:59 pm
alojando memoria dinámicamente

int* M = (int*)malloc(sizeof(int) * DIM); // C
o
int* M = new int[DIM]; //C++


Título: Re: Inicializar una matriz
Publicado por: furciorifa en 7 Marzo 2016, 07:04 am
Pues mira hay dos opciones

1 Compilar con gcc archivo.c -std=c99 en GNU/Linux y hacer lo siguiente:
Código
  1. int matriz[DIM][DIM]

2. Muchos protestarán porque no conocen los nuevos estándares así que a la antigua
ocupas
Código
  1. #include<stdlib.h>
Código
  1. int **matriz= malloc( sizeof(int *) * DIM + sizeof(int) * DIM* DIM);
  2.             matriz[0] = (int*)(matriz + DIM);
  3.        for (i = 1; i < DIM; i++) matriz[i] = matriz[i - 1] + DIM;
  4.  
Bueno en fin puedes hacer cualquiera de las 2
3. Si utilizas el 2. debes liberar memoria así
Código
  1. free(matriz[0]);

y después
Código
  1. free(m);
deben ser en ese orden esto es para evitar memory leaks (fugas de memoria)