Come scrivere una riga l'inversione della funzione Uso dei puntatori in C ++

February 8

Il ++ linguaggio di programmazione C, con i suoi puntatori e gli operatori di allocazione di memoria, spesso spaventa i programmatori esperti. Per i nuovi studenti, questi concetti sembrano incomprensibili. Linguaggi come Java e C # nascondere questi dettagli in modo maggior parte degli sviluppatori non hanno più bisogno di capirli. Anche così, nel giusto contesto, le caratteristiche di basso livello di C ++ offrono potenza e la flessibilità non si trovano in linguaggi di livello superiore. È possibile ottenere un tatto per la potenza di C ++ puntatori con la creazione di una semplice funzione di inversione di testo

istruzione

1 Creare un nuovo progetto o di lavoro utilizzando il linguaggio C ++ di vostra scelta in Microsoft Visual Studio 2010. Aprire Visual Studio, fare clic su "File" e poi selezionare "Nuovo progetto". Quando viene visualizzata la nuova finestra di dialogo progetto, scegliere C ++, Win32 e Win32 applicazione console. Dare il nome di "inversione", quindi fare clic su "Avanti" e "OK" finché non appare il file di origine.

2 Aggiungere "include" istruzioni nella parte superiore del file come segue:

includere <stdlib.h> includere <string.h>

3 Dichiarare la funzione inversa come segue:

inversa void (char

txt, char newTxt) {

Questa funzione legge la stringa di caratteri a partire dall'indirizzo di memoria memorizzato in "txt" poi lo copia in ordine inverso alla memoria a cui punta "newTxt." La funzione presuppone che la memoria sufficiente è stato assegnato per la nuova stringa.

4 Creare un puntatore a carattere "c" come segue:

char * c = txt + strlen (txt);

Il puntatore carattere "* c" è niente di più che un luogo per memorizzare un indirizzo di memoria. Inizializzare recuperando l'indirizzo in "txt", quindi aggiungere la lunghezza della stringa di testo.

5 Copiare il testo utilizzando il seguente ", mentre" loop:

while (c> txt) {

c--;

* NewTxt = * C;

newTxt ++;

}

Spostare la "C" puntatore indietro di un carattere (è stato inizializzato un carattere oltre la fine della stringa di testo). Una volta che avete l'ultimo carattere, copiarlo sul primo carattere della nuova stringa come puntata da "newTxt." Far avanzare il puntatore "newTxt" avanti di un carattere. La seconda volta attraverso, copiare il next-to-the-ultimo carattere del "txt" stringa per il secondo carattere della stringa "newTxt". Questo continua fino ad arrivare di nuovo all'inizio.

6 Aggiungere uno zero finale per la stringa "newTxt" e terminare la funzione.

* NewTxt = 0;

}

In C ++, tutte le stringhe di testo terminano con uno zero binario.

7 Aggiungere il codice per testare la funzione come segue:

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

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

char * newTxt;

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

reverse (txt, newTxt);

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

gratuito (newTxt);

return 0;

}

Le variabili sono denominati come nella funzione per evitare confusione. La funzione "malloc" alloca la memoria per la stringa "newTxt", la funzione viene chiamata. In seguito, stampare la nuova stringa alla console, quindi liberare la memoria allocata da "malloc".

Per testare il programma in Visual Studio, fare clic su F5.

Consigli e avvertenze

  • Quando si utilizza puntatori, il modulo "c" indica l'indirizzo di memoria, mentre "* c" indica il contenuto dell'indirizzo di memoria.