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.