Hvordan skrive en linje Rever funksjon ved hjelp av pekere i C ++

C ++ programmeringsspråk, med sine tips og minnetildeling operatører, ofte skremmer erfarne programmerere. For nye studenter, disse begrepene synes uforståelig. Språk som Java og C # skjule disse detaljene slik at de fleste utviklere ikke lenger trenger å forstå dem. Likevel, i riktig sammenheng, ++ lavnivå funksjonene i C gir kraft og fleksibilitet som ikke finnes i høyere nivå språk. Du kan få en følelse av makt C ++ pekere ved å lage en enkel tekst reversering funksjon

Bruksanvisning

1 Opprett et nytt prosjekt eller arbeidsområde ved hjelp av C ++ språket du ønsker i Microsoft Visual Studio 2010. Åpne Visual Studio, klikk på "File" og velg "New Project". Når det nye dialogprosjektet vises, velger C ++, Win32 og Win32 Console Application. Gi den navnet "Tilbakeføring", deretter "Next" og "OK" til kildefilen vises.

2 Legg til "inkludere" uttalelser på toppen av filen som følger:

inkluderer <stdlib.h> inkluder <string.h>

3 Erklærer motsatt funksjon som følger:

void revers (char

txt, røye newTxt) {

Denne funksjonen leser tegnstrengen starter på minneadressen lagret i "txt" og deretter kopierer det i motsatt rekkefølge av minnet peker til "newTxt." Funksjonen forutsetter at tilstrekkelig minne er tildelt for den nye strengen.

4 Lag en karakter pointer "c" som følger:

char * c = txt + strlen (txt);

Tegnet pointer "* c" er noe mer enn et sted å lagre en minneadresse. Initialisere den ved å hente adressen i "txt", deretter legge til lengden på tekststreng.

5 Kopier teksten ved hjelp av følgende "mens" loop:

while (c> txt) {

c--;

* NewTxt = * c;

newTxt ++;

}

Flytt "c" pekeren tilbake ett tegn (det ble initialisert ett tegn forbi slutten av tekststrengen). Når du har det siste tegnet, kopiere den til det første tegnet i den nye strengen som peker til "newTxt." Fremme "newTxt" peker fremover ett tegn. Den andre gangen, kopierer neste-til-siste tegnet av "txt" streng til det andre tegnet av "newTxt" streng. Dette fortsetter til du kommer tilbake til begynnelsen.

6 Legg en etterfølgende null til "newTxt" streng og avslutte funksjonen.

* NewTxt = 0;

}

I C ++, alle tekststrenger ende med en binær null.

7 Legg koden for å teste funksjonen som følger:

int _tmain (int argc, _TCHAR * argv []) {

char *txt="Four score and seven years ago...";

char * newTxt;

newTxt = (char *) malloc (strlen (txt) 1);

revers (txt, newTxt);

printf ( "% s \ n", newTxt);

gratis (newTxt);

returnere 0;

}

Variablene er navngitt på samme måte som i funksjon for å unngå forvirring. Den "malloc" -funksjonen allokerer minne for "newTxt" streng, slik at funksjonen blir kalt. Etterpå skriver den nye strengen til konsollen, og deretter frigjøre minne er tildelt av "malloc."

For å teste programmet i Visual Studio, kan du klikke F5.

Hint

  • Ved bruk av pekere, form "c" indikerer lageradressen, mens "* c" angir innholdet i lageradressen.