[C con Clase] Comprobar validez de un puntero, miembro de una estructura

marcelinux marcelinator en gmail.com
Mie Feb 24 21:46:22 CET 2016


El pasado 2016-02-24 16:40:48, Salvador Pozo escribió:
SP> 1) En la función, los nombres de los parámetros están intercambiados. En la llamada usamos asignar(b,a), y en la función el primer parámetro se llama 'a' y el segundo 'b'. De modo que lo que en main es 'a', en la función es 'b' y viceversa.
Si. A primera vista choca, pero no es mayor problema.
SP> 2) Dentro de la función, 'a' (lo que en main es 'b'), no tiene asignada memoria.
SP> Como consecuencia, dependiendo del compilador, b.mem (en main), puede ser 0 (nulo), o puede tener un valor aleatorio (basura).
Por eso imaginaba que le falta la inicialización de 'a' antes de invocar la función.
-
SP> En el compilador que uso yo (MinGW), los punteros siempre se inicializan a cero, pero puede que en el que tu usas no no sea así.
Acabo de instalar TDM GCC 5.1 de Sourceforge en un Win7 x64, y produce error en la línea 19. En la inicialización 'a.mem[i]=0' dentro del for.
Lo probaré más a fondo otro día.
-
SP> Para verificar esto añade la siguiente línea en main, después de la declaración de los objetos 'a' y 'b'.
SP>     b.mem = 0;
OK. He probado esto y funcionó.
Por tanto, doy por resuelta mi duda.
-
De nuevo, muchas gracias por vuestra ayuda y consejo.


Más información sobre la lista de distribución Cconclase