Al parecer p es un puntero (o apuntador, depende de tu país y el libro) que apunta a una lista. Los punteros son variables que almacenan una dirección de memoria. Si quieres almacenar una dirección de memoria de un dato de tipo int por ejemplo, debes declarar un puntero de tipo int, con el nombre identificador del puntero precedido de un asterisco, por ejemplo:
int *p;
El valor NULL es una constante, e indica que el puntero está apuntando a nada. Una buena práctica de programación es siempre inicializar los punteros en NULL, ya que si no lo haces, el puntero quedará apuntando a una dirección de memoria cualquiera, y contendrá basura.
int *p = NULL;
Que el puntero sea NULL es generalmente una condición de término de una lista. Entonces mientras recorres la lista, si el puntero llega a null, significa que no hay más elementos en la lista, pero para eso, debes siempre inicializar los punteros en NULL antes de una asignación.
No lo indicas en tu código, pero es claro que tu variable p es un apuntador.
Un apuntador es una variable que hace justamente eso "apuntar", señalar una sección de la memoria fÃsica de tu computadora, en la cual hay otras variables (o puede haber "basura").
En la sentencia for que pusiste, se solicita que tu apuntador se actualice con la instrucción p->sig, lo cual probablemente se deba a que estás trabajando (al menos eso pareciera) con una lista ligada.
Obviamente el for no debe ser infinito... algún dÃa tiene que terminar... y termina cuando la condición p!=null deja de cumplirse. Es decir, termina cuando p==null. Null es un valor predefinido del lenguaje que representa el vacÃo, y significa que tu apuntador no está apuntando a una localidad de memoria que contenga el valor de alguna variable, sino que está apuntando a algún lugar de la memoria que sólo contiene "basura" (información que no es útil para tu aplicación)...
NULL se utiliza para saber si el arreglo (llamese vector, matriz, etc) esta vacio, o sea, q no contenga nada...Si null==0, no contiene nada...en tu caso haces un bucle que se va a ejecutar siempre que el vector tenga algun elemento, ya que null es distinto de cero
Answers & Comments
Verified answer
for(p=cab;p!=NULL;p=p->sig)
Al parecer p es un puntero (o apuntador, depende de tu país y el libro) que apunta a una lista. Los punteros son variables que almacenan una dirección de memoria. Si quieres almacenar una dirección de memoria de un dato de tipo int por ejemplo, debes declarar un puntero de tipo int, con el nombre identificador del puntero precedido de un asterisco, por ejemplo:
int *p;
El valor NULL es una constante, e indica que el puntero está apuntando a nada. Una buena práctica de programación es siempre inicializar los punteros en NULL, ya que si no lo haces, el puntero quedará apuntando a una dirección de memoria cualquiera, y contendrá basura.
int *p = NULL;
Que el puntero sea NULL es generalmente una condición de término de una lista. Entonces mientras recorres la lista, si el puntero llega a null, significa que no hay más elementos en la lista, pero para eso, debes siempre inicializar los punteros en NULL antes de una asignación.
No lo indicas en tu código, pero es claro que tu variable p es un apuntador.
Un apuntador es una variable que hace justamente eso "apuntar", señalar una sección de la memoria fÃsica de tu computadora, en la cual hay otras variables (o puede haber "basura").
En la sentencia for que pusiste, se solicita que tu apuntador se actualice con la instrucción p->sig, lo cual probablemente se deba a que estás trabajando (al menos eso pareciera) con una lista ligada.
Obviamente el for no debe ser infinito... algún dÃa tiene que terminar... y termina cuando la condición p!=null deja de cumplirse. Es decir, termina cuando p==null. Null es un valor predefinido del lenguaje que representa el vacÃo, y significa que tu apuntador no está apuntando a una localidad de memoria que contenga el valor de alguna variable, sino que está apuntando a algún lugar de la memoria que sólo contiene "basura" (información que no es útil para tu aplicación)...
NULL se utiliza para saber si el arreglo (llamese vector, matriz, etc) esta vacio, o sea, q no contenga nada...Si null==0, no contiene nada...en tu caso haces un bucle que se va a ejecutar siempre que el vector tenga algun elemento, ya que null es distinto de cero