Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/11/2011, 01:38
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: interpretar una linea de codigo

El operador ! indica negación. Así, en tu caso, si pf==NULL (no se ha abierto el fichero, luego pf sería FALSO), entonces !pf es VERDADERO y se ejecutará el código del if (en tu caso, la apertura del fichero). Resumiendo: if (!pf) significa "Si el puntero pf es nulo..."

Ojo con esto, porque la simple declaración de una variable no te garantiza que se inicie automáticamente a valor cero (o a valor nulo, en el caso de punteros). Eso es algo que depende del compilador. En el mejor de los casos, se te iniciarán a cero (o nulo) aquellas variables que declares como globales (fuera de las funciones). Las que declares localmente dentro de una función, dado que se crean en el momento de entrar a la función y se destruyen al salir de ella, tomarán un valor aleatorio, dependiendo de lo que hubiera en la memoria que se les asigne.

Para evitar problemas, no hagas comprobaciones en variables que no hayas iniciado tú con algún valor, el fiarse del posible resultado de estas comprobaciones puede conducir a un comportamiento errático del programa, o al desastre si se trata de punteros.