Punteros de C ++

Los punteros de C ++ son fáciles y divertidos de aprender. Algunas tareas de C ++ se realizan más fácilmente con punteros y otras tareas de C ++, como la asignación de memoria dinámica, no se pueden realizar sin ellos.

Como sabe, cada variable es una ubicación de memoria y cada ubicación de memoria tiene su dirección definida a la que se puede acceder utilizando el operador y comercial (&) que denota una dirección en la memoria. Considere lo siguiente que imprimirá la dirección de las variables definidas:

#include <iostream>

using namespace std;
int main () {
   int  var1;
   char var2[10];

   cout << "Address of var1 variable: ";
   cout << &var1 << endl;

   cout << "Address of var2 variable: ";
   cout << &var2 << endl;

   return 0;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Address of var1 variable: 0xbfebd5c0
Address of var2 variable: 0xbfebd5b6

¿Qué son los punteros?

UN pointeres una variable cuyo valor es la dirección de otra variable. Como cualquier variable o constante, debe declarar un puntero antes de poder trabajar con él. La forma general de una declaración de variable de puntero es:

type *var-name;

Aquí, typees el tipo base del puntero; debe ser un tipo C ++ válido yvar-namees el nombre de la variable de puntero. El asterisco que usó para declarar un puntero es el mismo asterisco que usa para la multiplicación. Sin embargo, en esta declaración, el asterisco se utiliza para designar una variable como puntero. A continuación se muestra la declaración de puntero válida:

int    *ip;    // pointer to an integer
double *dp;    // pointer to a double
float  *fp;    // pointer to a float
char   *ch     // pointer to character

El tipo de datos real del valor de todos los punteros, ya sean enteros, flotantes, de caracteres u otros, es el mismo, un número hexadecimal largo que representa una dirección de memoria. La única diferencia entre punteros de diferentes tipos de datos es el tipo de datos de la variable o constante a la que apunta el puntero.

Usando punteros en C ++

Hay pocas operaciones importantes, que haremos con los punteros con mucha frecuencia. (a) Definimos una variable de puntero. (b) Asignar la dirección de una variable a un puntero. (c)Finalmente acceda al valor en la dirección disponible en la variable de puntero. Esto se hace usando el operador unario * que devuelve el valor de la variable ubicada en la dirección especificada por su operando. El siguiente ejemplo hace uso de estas operaciones:

#include <iostream>

using namespace std;

int main () {
   int  var = 20;   // actual variable declaration.
   int  *ip;        // pointer variable 

   ip = &var;       // store address of var in pointer variable

   cout << "Value of var variable: ";
   cout << var << endl;

   // print the address stored in ip pointer variable
   cout << "Address stored in ip variable: ";
   cout << ip << endl;

   // access the value at the address available in pointer
   cout << "Value of *ip variable: ";
   cout << *ip << endl;

   return 0;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20

Punteros en C ++

Los punteros tienen muchos conceptos, pero fáciles, y son muy importantes para la programación C ++. A continuación se presentan algunos conceptos importantes de punteros que deberían ser claros para un programador de C ++:

No Señor Concepto y descripción
1 Punteros nulos

C ++ admite puntero nulo, que es una constante con un valor de cero definido en varias bibliotecas estándar.

2 Aritmética de punteros

Hay cuatro operadores aritméticos que se pueden usar en punteros: ++, -, +, -

3 Punteros vs matrices

Existe una estrecha relación entre punteros y matrices.

4 Matriz de punteros

Puede definir matrices para contener varios punteros.

5 Puntero a puntero

C ++ le permite tener un puntero en un puntero y así sucesivamente.

6 Pasar punteros a funciones

Pasar un argumento por referencia o por dirección permite que la función llamada cambie el argumento pasado en la función que llama.

7 Puntero de retorno de funciones

C ++ permite que una función devuelva un puntero a variable local, variable estática y también memoria asignada dinámicamente.