DAVID J. Malan: Imos escribir un programa que solicita ao usuario a unha cadea e logo proceder a imprimir esta cadea carácter dun personaxe por liña. Agora, no pasado, tería feito probablemente coa notación de corchetes, tratar eficazmente unha cadea é un array de caracteres. Pero esta vez, imos tratar en vez unha corda para que realmente é, un punteiro ou un enderezo. En concreto, a dirección dun personaxe, en realidade o enderezo do primeiro carácter nunha secuencia de personaxes que coñecemos colectivamente como unha cadea. Imos primeiro declarar unha cadea para o que realmente é, char *. E nós imos chamalo s. E, a continuación, atribuílo la a devolución valor da secuencia de get. Imos seguinte facer algunha comprobación de erros. Se s é nulo, imos devolver inmediatamente para que non accidentalmente desreferenciava que punteiro nulo. A continuación, imos interactuar sobre o carácteres de s como segue. Para int, i recibe 0. n é igual á lonxitude da corda de s. Faino mentres eu sexa menor que n. E en cada iteración, incrementar i. E o que queremos facer en cada iteración? Imos agora imprimir en cada iteración un único carácter seguido por unha nova liña. Ben, o personaxe facer queremos imprimir? Propoño que ir ao enderezo que é igual á suma de s máis eu. Agora, por que esta expresión? Ben, lembre que almacenado en s é o enderezo do primeiro carácter na nosa cadea, s. Mentres tanto, eu está a ser incrementado o cada iteración de xeito que comeza en 0, logo vai a 1, a continuación, vai a 2. Polo tanto, noutras palabras, é máis eu efectivamente representa o enderezo de o carácter i-th en s. Entón, se imos ao enderezo por medio de o operador *, estaremos indo ao i-ésimo carácter dunha cadea. E ese é o valor que será substituído polo noso espazo reservado, por cento C. Imos confirmar tanto. Imos gardar, compilar e executar este programa. Fai punteiros, punteiros barra de puntos. E agora eu vou darlle un cadea como Olá Intro. E, de feito, eu vexo H-E-L-L-O, con Cada carácter na súa propia liña.