DAVID J. MALAN: Låt oss skriva ett program som uppmanar användaren efter en sträng och sedan fortsätta att skriva ut den strängen tecken för tecken en per rad. Nu i det förflutna, skulle vi ha gjort det förmodligen med klammer notation, effektivt behandla en sträng är en grupp av tecken. Men den här gången, låt oss istället behandla en sträng för vad det egentligen är, en pekare eller en adress. Specifikt, adressen till en karaktär, verkligen adressen till första tecknet i en sekvens av tecken som vi kollektivt vet som en sträng. Låt oss först förklara en sträng för vad det egentligen är, char *. Och vi kallar det är. Och sedan tilldela den avkastningen värdet av get sträng. Låt oss nästa göra en del felkontroll. Om s är null, låt oss genast tillbaka så att vi inte av misstag dereference att null-pekare. Nästa, låt oss iterera över tecken i s enligt följande. För int, jag blir 0. n är lika med stränglängd s. Gör detta så länge som jag är mindre än n. Och på varje iteration, öka i.. Och vad vill vi att göra på varje iteration? Låt oss nu skriva ut på varje iteration ett enda tecken följt av en ny rad. Nå, vilken karaktär gör Vi vill skriva ut? Jag föreslår att vi går till den adress som är lika med summan av s plus jag. Nu, varför det uttrycket? Tja, minns att lagras i s är det adressen för det första tecknet i vår sträng, s. Under tiden jag håller på att ökas på varje iteration så att den startar vid 0, sedan går till 1, går sedan till 2. Så med andra ord, s plus jag effektivt representerar adressen till den i: te tecknet i talet. Så om vi går till den adressen med hjälp av den * operatör, kommer vi att gå till i: te tecknet i strängen. Och det är det värde som ska ersätta vår placeholder, procent C. Nu bekräftar så mycket. Låt oss spara, sammanställa och köra programmet. Gör pekare, dot slash pekare. Och nu ska jag ge det en sträng som hej. Enter. Och faktiskt, jag ser H-E-L-L-O, med varje röding på en egen rad.