Veran, tengo que hacer una matriz del tamaño [2^n] x [n] y bueno, lo que hago es que paso la n a una funcion para inicializar; utilizo una matriz dinamica, entonces en main declaro una variable "int **mat" y le paso mat a la funcion. con esto esperaba conseguir la matriz nueva generada por referenciacion en main, sin embargo me lleve la sorpresa que no era asi, uso malloc en la funcion de generacion y el apuntador que me regresa malloc no lo consigue el apuntador de apuntador a mat
Paso directo al código:
Este fue mi primer código
Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <math.h> int newMatDin(int **mat, int tam){ int i,j; if (mat == NULL) return -1; else for(i=0; i<tot; i++) { if (mat[i] == NULL) return -1; } for(i=0; i<tot; i++) { for(j=0; j<tam; j++) mat[i][j] = 0; } return 0; } //****MAIN main() { //***TEST*** int **mat = NULL; int n = 4, k=1, i,j, temp; temp = newMatDin(mat, n); if (temp == 0) for(j=0; j<n; j++) } else //Se generó bien la matriz, sin embargo **mat sigue apuntando a NULL }
Entonces en lo que le movia a las cosas que se me ocurrian hice este otro, donde paso la direccion del puntero de puntero MAT, y cuando se termina la ejecución de la función, MAT ya cuenta con la direccion que nos dió malloc. Sin embargo ya se me hace muy dificil el manejo de los apuntadores dentro de la funcion y ahora la "Violacion de Segmento" se genera dentro de la funcion
Aca mi segundo código:
Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <math.h> /** Generamos la matriz dinamica, todos los elementos en 0, * si hay error retorna -1, sino regresa 0. */ int newMatDin(int ***mat, int tam){ int i,j; if (*mat == NULL) //No hay problemas aca, ya tiene direccion return -1; else for(i=0; i<tot; i++) { if (*mat[i] == NULL) return -1; } for(i=0; i<tot; i++) { //Ya no entra bien aca por los problemas anteriores for(j=0; j<tam; j++) *mat[i][j] = 0; } return 0; } //****** main() { int **mat = NULL; int n = 4, k=1, i,j, temp; temp = newMatDin(&mat, n); //Creamos la matriz //Ya tengo bien el apuntador a la matriz dinamica inicializada en 0s solo que //adentro de la funcion hay problemas y no termina el resto bien }
Algun experto en el tema que pueda ayudarme?
Gracias