[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