Page 68

int *p = TITULO ; Es correcto tambien declarar el puntero , y asignarlo posteriormente char *p ; p = TITULO ; Esta asignación solo dá , al contenido del puntero la dirección del string global predefinido . Sin embargo , si en lugar de un puntero deseamos usar un array , en este caso es correcta la inicialización del mismo , pero no así su asignación posterior: char nombre[] = TITULO ; /* Correcto */ ................. char nombre[11] ; nombre = TITULO ; /* Incorrecto */ Ya que si bien, el nombre de un array es un puntero , es de índole constante , negándose el compilador a cambiar su dirección. Si estuvieramos en el caso de ingresar un string variable , por ejemplo leyendolo desde el teclado , podríamos utilizar un array, de la siguiente forma : char nombre[128] ; scanf("%s" , nombre ) ; en este caso la única precaución es que , el array tenga suficiente longitud para albergar a cualquier string escrito . En el caso de trabajar bajo DOS, basta con darle 128 caracteres, ya que el buffer de lectura de ese sistema operativo no supera dicha cantidad . Hay que hacer notar que la longitud de un string puede ser mayor que la del texto válido contenido , ya que este termina donde se encuentra el NULL , quedando los bytes sobrantes desaprovechados . Seria incorrecto leer este string mediante un puntero declarado , pero al que no se le ha reservado memoria: char *p ; scanf("%s" , p ) /* Incorrecto */ ya que la dirección contenida por p no ha sido inicializada aún con ningun valor válido . Lo correcto en éste caso es: char *p ; p = (char *)malloc(128 * sizeof(char)) ; scanf("%s" , p ) /* Correcto */ reservando memoria previamente a cargar el string. Otro punto sobre el que quiero volver, a fín de evitar confusiones, es el sentido de la constante NULL , y el de variables nulas. Segun éste se aplique a caracteres, strings ó punteros, su significado varia: • Un caracter nulo tiene el valor ASCII cero. Un string siempre estará terminado por un caracter NULL . • Un string nulo ó vacio, no tiene longitud cero, sino que su primer caracter es un NULL .

Curso de iniciación al lenguaje C  

#include <stdio.h> main() printf("Bienvenido a la Programación en lenguaje C \n"); return 0; { } es mucho /* este es un comentario cor...

Advertisement