David J. MALAN: Să scrie un program care solicită utilizatorului pentru un șir și apoi continua pentru a imprima ca șir caracter pentru caracter câte unul pe linie. Acum, în trecut, ne-ar fi făcut atât de probabil cu notație paranteză, tratarea în mod eficient un șir este o serie de caractere. Dar de data aceasta, să trateze în loc un șir de ceea ce este de fapt, un pointer sau o adresă. Mai exact, adresa unei caracter, într-adevăr adresa primul caracter, într-o secvență de caractere pe care le cunoaștem în mod colectiv ca un șir. Să declare în primul rând un șir de ceea ce este de fapt, char *. Și vom numi aceasta e. Și apoi atribuie revenirea Valoarea de string GET. Să următor face unele verificarea erorilor. În cazul în care s este nul, să se întoarcă imediat astfel încât să nu accidental dereference care pointer nul. Următor, să repeta de-a lungul caracterele din s, după cum urmează. Pentru Int, i devine 0. n este egal cu lungimea șirului de s.. Face acest lucru atât timp cât i este mai mic decât n. Și pe fiecare iterație, incrementa i. Și ceea ce vrem să face pe fiecare iteratie? Hai acum imprima pe fiecare iterație un singur caracter urmată de o nouă linie. Ei bine, ce personaj face ne-o dorim pentru a imprima? Propun să mergem la adresa care este egală cu suma s plus i. Acum, de ce expresie? Ei bine, amintim că stocate în S este adresa primului caracter în șir nostru, e. Între timp, i este incrementat pe fiecare iterație, astfel încât acesta începe la 0, apoi se duce la 1, apoi se duce la 2. Deci, cu alte cuvinte, s plus i eficient reprezintă adresa caracterul i-lea în s.. Deci, dacă mergem la acea adresă prin operatorul *, vom merge la i-lea caracter din șirul. Și care este valoarea care va fi înlocuit de substituent nostru, la sută C. Să confirma cât de mult. Să salvăm, compila, și rula acest program. Face indicii, indicii slash punct. Și acum voi da o șir ca salut. Enter. Și într-adevăr, văd H-E-L-L-O, cu fiecare caracter pe o linie proprie.