Tecnología

Inicio

Cómo escribir una línea de inversión de la función Utilizar punteros en C ++

El lenguaje de programación C ++, con sus punteros y operadores de asignación de memoria, a menudo asusta a los programadores experimentados. Para los nuevos estudiantes, estos conceptos parecen incomprensibles. Los lenguajes como Java y C # esconden estos detalles para la mayoría de los desarrolladores ya no tienen que entenderlos. A pesar de ello, en el contexto adecuado, las características de bajo nivel de C ++ ofrecen potencia y flexibilidad que no se encuentra en lenguajes de alto nivel. Usted puede obtener una idea de la potencia de los punteros de C ++ mediante la creación de una función de texto sencillo reversión

Instrucciones

1 Crear un nuevo proyecto o espacio de trabajo utilizando el lenguaje C ++ de su elección en Microsoft Visual Studio 2010. Abra Visual Studio, haga clic en "Archivo" y luego "Nuevo proyecto". Cuando aparezca el cuadro de diálogo nuevo proyecto, elija C ++, Win32 y Win32 aplicación de consola. Darle el nombre de "Inversión", a continuación, haga clic en "Siguiente" y "OK" hasta que aparezca el archivo de origen.

2 Añadir "incluir" declaraciones en la parte superior del archivo de la siguiente manera:

incluir <stdlib.h> incluir <string.h>

3 Declarar la función inversa de la siguiente manera:

sin efecto inverso

(txt carbón, carbón de leña newTxt) {

Esta función lee la cadena de caracteres a partir de la dirección de memoria almacenada en "txt" y luego lo copia en el orden inverso a la memoria a la que apunta "newTxt." La función asume que hay suficiente memoria se ha asignado a la nueva cadena.

4 Crear un puntero carácter "c" de la siguiente manera:

char * c = txt + strlen (txt);

El puntero del carácter "* c" no es más que un lugar para almacenar una dirección de memoria. Inicializarlo mediante la recuperación de la dirección en "txt", a continuación, añadir la longitud de la cadena de texto.

5 Copiar el texto con el siguiente bucle "while":

mientras que (c> txt) {

c--;

* * NewTxt = c;

newTxt ++;

}

Mueva la "C" puntero hacia atrás un carácter (que se ha inicializado un carácter más allá del final de la cadena de texto). Una vez que tenga el último carácter, copiarlo en el primer carácter de la nueva cadena como la que apunta "newTxt." Avanzar el puntero "newTxt" un carácter hacia adelante. La segunda vez, copie el siguiente-a-la-último carácter de la "txt" cadena en el segundo carácter de la cadena "newTxt". Esto continúa hasta llegar de nuevo al principio.

6 Añadir un cero al final de la cadena "newTxt" y terminar la función.

* NewTxt = 0;

}

En C ++, todas las cadenas de texto terminan con un cero binario.

7 Agregue el código para probar la función de la siguiente manera:

int tmain (int argc, argv _TCHAR * []) ​​{

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

char * newTxt;

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

reverse (txt, newTxt);

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

libre (newTxt);

return 0;

}

Las variables se denominan el mismo que en la función de evitar la confusión. La función "malloc" asigna memoria para la cadena "newTxt", entonces la función se llama. A continuación, imprimir la nueva cadena a la consola, y luego liberar la memoria asignada por "malloc".

Para probar el programa en Visual Studio, haga clic en F5.

Consejos y advertencias

  • Cuando el uso de punteros, la forma "C" indica la dirección de memoria, mientras que "* c" indica el contenido de la dirección de memoria.