[C con Clase] problema
Steven Davidson
srd4121 en njit.edu
Dom Feb 20 07:23:33 CET 2011
Hola Omar,
On 2/20/2011 1:05 AM, omar mendoza wrote:
> hola lista, tengo el siguiente problema
>
[CORTE]
> al compilar me sale segmentation fault, en el debbuger truena en la
> inicialización pero no sé por qué. Cuando lo hago sin funciones, es
> decir, todo secuencial en el main me realiza todo sin problemas,
> alguien que me expilque por qué?
El problema es que no pasas el doble puntero, 'matriz', por referencia a
estas funciones. Como en C no hay paso por referencia, tendríamos que
copiar la dirección de memoria de 'matriz' como parámetro a las
funciones. Recuerda que quieres modificar el valor en 'matriz', por lo
tanto en C necesitas su dirección de memoria. Esto es,
void solicitar( float ***mat, const int m, const int n );
void inicializa( float **mat, const int m, const int n );
void imprime( const float ***mat, const int m, const int n );
Observa que en esta última función, 'imprime()', he puesto 'const' ya
que no interesa modificar los números de coma flotante.
Por cierto, podrías usar la función estándar, 'memset()', declarada en
<string.h>, para copiar el valor de 0 a todos los elementos de la
matriz, en lugar de crear tu propia función 'inicializa()'.
Por último, deberías liberar la memoria que creaste, invocando 'free()'.
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase