2010-03-06 17 views

Respuesta

5

Su declaración if es equivalente a:

if (val != NULL) { ... 

El FAQ comp.lang.c contiene this question and answer que entra en un poco más detalle por qué esto es cierto.

+0

¿Por qué "roughly"? – Felixyz

+0

@Felixyz: Tienes razón, esa era una fraseología innecesaria. He agregado un enlace para más detalles. –

1

Está probando si val contiene el puntero NULL. Si hubiera dicho,

char * val = NULL; 

if (val) { 
    ... 
} 

la prueba fallaría.

+0

¿Quieres decir que fallaría? – Tronic

+0

@Tronic Por supuesto que sí, nunca publique en SO antes del desayuno. –

1

si el val es un puntero nulo o no.

2

Está comprobando ver if (val != 0). En C, todos los valores distintos de cero son verdaderos, cero es falso.

1

La declaración está comprobando si val, que es lo mismo que someString, no es NULL. En general, if (v) es un atajo para if (v!=0).

1

Está comprobando que val es NULO o no.

2

val es un puntero a un char. Esto se puede establecer en cualquier dirección -valida o inválida-. La sentencia if se acaba de comprobar si val no es nulo:

if(val)

es equivalente a

if(NULL != val)

es equivalente a

if((void*)0 != val)

Aún así, el puntero puede señalar a una ubicación no válida, por ejemplo, memoria que no está en el espacio de direcciones de su aplicación. Por lo tanto, es muy importante inicializar punteros a 0, de lo contrario, señalarán ubicaciones no definidas. En el peor de los casos, esa ubicación podría ser válida y no notará el error.

1

Como han dicho otros, está comprobando si el puntero del char no es NULL. Si desea verificar si la cadena no está vacía, intente strlen.

0

val es un puntero, esa declaración es igual a if (val! = 0), mientras que 0 también se define como NULL, por lo que comprobará si ese puntero apunta a la dirección NULL, tenga en cuenta ese puntero NULL no es lo mismo que cadena vacía

0

La condición if anterior está comprobando si el puntero apunta a una cadena no nula. Si ese puntero apunta a una cadena que no sea nula, la condición será verdadera.Else, false.

Cuestiones relacionadas