Aritmética de puntero C ++

Aritmética de puntero C ++

Sabemos que los punteros son direcciones de memoria de variables y son numéricas en general. Por eso también podemos hacer algunos cálculos aritméticos sobre los punteros. Estos cálculos se pueden hacer lo mismo que nosotros en valores numéricos en matemáticas o programación. Por lo tanto, discutiremos algunas operaciones aritméticas en los punteros dentro de nuestra guía tutorial usando C++. Hemos estado usando el Ubuntu 20.04 Sistema Asegúrese de tener el compilador G ++ configurado en él. Comencemos con la implementación de la aritmética del puntero en el Ubuntu 20.04 Sistema de carcasa terminal con la ayuda de un atajo CTRL+ALT+T usado en su escritorio.

Ejemplo 1:

Comience el primer ejemplo de código C ++ para usar operadores aritméticos "+" en punteros mediante la creación de archivos. Puede crear un archivo de muchas maneras, pero el más simple es el uso de la instrucción de "tacto". Por lo tanto, hemos probado la palabra clave táctil junto con el título de un archivo que se formará en la consola y presionó Enter. El archivo se crea en el Ubuntu 20.04 carpeta de inicio.

Ahora, para abrir este archivo recién creado, puede usar cualquiera de los editores incorporados que vienen con Ubuntu 20.04 I.mi. vim, editor de texto o editor de GNU Nano. Le sugerimos que use el editor de nano GNU, ya que lo hemos estado utilizando en el shell como se demuestra en la imagen a continuación.

Este archivo "Pointer.CC ”está desatado en el editor hasta ahora. Hemos incluido el archivo de encabezado de transmisión de entrada-salida en la primera línea y el espacio de nombres estándar se ha utilizado en la segunda línea. Hemos inicializado una variable entera "V" con un valor de 8. En la siguiente línea consecutiva, hemos inicializado un puntero de tipo entero "P". Este puntero es la dirección de una variable "V", ya que está sujeto a la variable "V" usando el signo "&". Esto significa que podemos cambiar la dirección de un mutable en cualquier momento. Las declaraciones de Cout estándar se han utilizado una tras otra. El primero es mostrar la dirección original de la variable "V" guardada como el puntero "P".

En la siguiente línea, la instrucción Cout ha estado incrementando la dirección del puntero por 1 y mostrándolo. Las siguientes dos líneas han estado utilizando el puntero e incrementando su valor en 2 y 3. Los valores incrementados se han mostrado con la instrucción CoUT. El código termina aquí. Guardemos el código primero antes de la ejecución. Use Ctrl+S para este propósito. Tienes que dejar el editor de Gnu Nano para regresar hacia la terminal. Utilice la tecla de acceso directo "Ctrl+X" para este propósito. Este fue el código C ++ más simple para incrementar el puntero usando el operador+.

Después de volver al shell, tenemos que hacer que nuestro código sea libre de errores. El compilador C ++ se usa para esta perseverancia. La palabra clave del compilador "G ++" se ha utilizado junto con el nombre de un archivo para ser compilado i.mi. "puntero.CC ". La compilación es exitosa, ya que puede ver que no devuelve nada. Ejecutemos nuestro código libre de errores usando el "./a.Comando estándar de fuera ". Tenemos las 4 direcciones diferentes para la variable "V".

La primera es la dirección original "P" de la variable "V". El segundo se incrementa en 1, el tercero se incrementa por el valor 2 y el último se incrementa en 3. Cada vez, realizamos el incremento, los dos últimos caracteres de una dirección tienden a cambiar como se muestra debajo.

Ejemplo 2:

Hagamos otro ejemplo para usar el operador de disminución en un puntero. Entonces, hemos estado consumiendo el mismo archivo antiguo "Pointer.CC ". El espacio de nombres y el encabezado de entrada-salida se usan igual que antes. Otra variable entera constante "S" se inicializa con un valor constante de 5. Dentro del método Main (), hemos estado utilizando una matriz de tipo entero llamada "V" de tamaño "S" con 5 elementos en él. El puntero entero "P" ha sido declarado. El puntero ha estado vinculado con la matriz entera "V" usando el signo "&".

El tamaño se iniciará desde la dirección S-1. El bucle "para" se ha inicializado que se inicia desde el tamaño 5 y funciona en el orden decreciente disminuyendo en 1 cada vez. Cada vez que funciona el bucle "para", muestra la dirección de memoria del número de índice iterado por el bucle y el valor en un índice particular también utilizando la instrucción COUT estándar. La "P" demuestra la dirección de índice, mientras que el *P representa el valor en ese índice particular. En cada iteración, el puntero ha sido disminuido por 1. El bucle termina aquí y la función principal también.

Compile el código primero con el compilador G ++ del lenguaje C ++. Se ejecuta con éxito sin errores. La ejecución es realizada por el "./a.Comando fuera ". Tenemos la salida como se muestra a continuación. Puedes ver, tenemos cada dirección de memoria para un índice en particular i.mi. 5,4,3,2,1 en el orden decreciente de los índices. Por otro lado, también obtenemos los valores en cada índice en particular cada vez que el bucle itera en el orden decreciente hasta el último valor.

Ejemplo 3:

Tengamos una nueva instancia de punteros. Dentro de este ejemplo, compararemos las direcciones de puntero, así como los valores que contienen. Así, el puntero del documento.CC ahora se lanza en el editor GNU Nano. La función Main () se ha inicializado después del espacio de nombres estándar y el encabezado de transmisión "IO" en el archivo de código. Contiene dos variables de tipo de cadena S1 y S2 con valores de cadena completamente diferentes i.mi. "AQSA" y "Yasin".

Después de esto, hemos inicializado dos variables de puntero de tipo de cadena P1 y P2 limitadas por ambas variables S1 y S2 usando el carácter "&" después del signo "=". Esto significa que el puntero P1 es la dirección de la variable S1 y P2 es la dirección de la variable S2.

La primera cláusula de cout estándar se usa para mostrar el resultado de la comparación de ambos punteros I.mi. direcciones de ambas variables de cadena. Si las direcciones son las mismas, mostrará 1 como verdadero de lo contrario 0 como falso en el shell. La segunda cláusula de cout estándar se usa para mostrar el resultado de comparación de los valores almacenados en la dirección específica del puntero. Si los valores son los mismos, devolverá 1, de lo contrario 0. El programa de comparación termina aquí.

Compile su código C ++ primero y ejecútelo. Tenemos 0 como resultado de ambas comparaciones i.mi. FALSO. Esto significa que ambas direcciones de puntero y valores en esas direcciones no son las mismas.

Cambiemos un poco el código. Abra el mismo archivo y actualice los valores de cadena. Las mismas variables de cadena S1 y S2 se han inicializado con los mismos valores I.mi. AQSA. El resto del código se usa sin cambios como lo hicimos antes. Guarde su código para obtener el resultado actualizado.

Tenemos 0 como el resultado de la comparación de las direcciones de puntero, ya que ambas variables contienen diferentes direcciones de memoria y 1 como resultado de la comparación de valor I.mi. Los mismos valores de ambas cuerdas.

Conclusión:

Hemos discutido las operaciones aritméticas realizadas en los punteros. Hemos utilizado los operadores aritméticos de incremento y disminución en punteros. También hemos discutido los ejemplos de bonificación para ilustrar el funcionamiento del operador de comparación en dos punteros diferentes.