Saltar al contenido

Consejos de C ++ con ejemplos

¿Qué son las propinas?

IC ++, un puntero se refiere a una variable que mantiene la dirección de otra variable. Como las variables regulares, las sugerencias son un tipo de datos. Por ejemplo, un puntero de tipo entero puede contener la dirección de una variable de tipo entero. Un puntero de tipo de carácter puede contener una dirección de variable de tipo de carácter.

Debería ver un puntero como una representación simbólica de una dirección de memoria. Con sugerencias, los programas de llamada por referencia pueden simular. También pueden crear y manipular estructuras de datos dinámicas. IC ++, una variable de puntero se refiere a una variable que apunta a una dirección particular en la memoria que es apuntada por otra variable.

En este tutorial de C ++, aprenderá:

Direcciones en C ++

Para comprender los consejos de C ++, debe comprender cómo las computadoras almacenan datos.

Cuando crea una variable en su programa C ++, la memoria de la computadora recibe algo de espacio. El valor de estas variables se almacena en la ubicación asignada.

Para obtener información sobre la ubicación de la memoria de la computadora donde se almacenan los datos, C ++ proporciona la Y operador (referencia). El operador envía la dirección ocupada por una variable.

Por ejemplo, si x es una variable, x devuelve la dirección de la variable.

Declaración de puntero de sintaxis

Declarar C ++ tiene la siguiente sintaxis:


datatype *variable_name; 

A continuación, se muestra un ejemplo de declaraciones de puntero válidas en C ++:


int    *x;    // a pointer to integer
double *x;    // a pointer to double
float  *x;    // a pointer to float
char   *ch     // a pointer to a character

Operador de referencia (&) y operador diferido

El operador de referencia (&) devuelve la dirección de la variable.

El operador de desreferencia

nos ayuda a encontrar el valor almacenado en una dirección de memoria.

Por ejemplo:

Si tenemos una variable llamada num, se almacena en la dirección 0x234 y el valor se almacena 28.

Volverá el operador de referencia (&) 0x234.


#include <iostream>
using namespace std;
int main() {
	int  x = 27;  
	int  *ip;        
	ip = &x;       
	cout << "Value of x is : ";
	cout << x << endl;
	cout << "Value of ip is : ";
	cout << ip<< endl;
	cout << "Value of *ip is : ";
	cout << *ip << endl;
	return 0;
}

El operador de desreferencia

volver 5.

Ejemplo 1:

Producción:

  1. Como funciona esto:
  2. Aquí hay una imagen del código:
  3. Explicación del Código:
  4. Importe el archivo de encabezado de iostream. Esto nos permitirá utilizar las funciones definidas en el archivo de encabezado sin obtener errores.
  5. Incluya el nombre de espacio estándar para usar sus clases sin llamarlo.
  6. Llame a la función principal (). La lógica del programa debe agregarse dentro del cuerpo de esta función. {Marca el comienzo del cuerpo de la función.
  7. Declare una variable entera xa y asigne un valor de 27.
  8. Confirme la variable de puntero * ip.
  9. Almacene la dirección x variable en la variable de puntero.
  10. Imprime texto en la consola.
  11. Imprime un valor variable de x en la pantalla.
  12. Imprime texto en la consola.
  13. Imprime la dirección de la variable x. El valor de la dirección se almacenó en la variable ip.
  14. Imprime texto en la consola.

Imprimir valor almacenado en la dirección del puntero.

El programa debe devolver valor para su ejecución exitosa.

El final del cuerpo de la función principal ().


p = arr;

Consejos y matrices


p = &arr;

Las matrices y las sugerencias funcionan según un concepto relacionado. Hay varias cosas a tener en cuenta al trabajar con matrices que tienen sugerencias. El nombre de la matriz en sí indica la dirección inferior de la matriz. Esto significa que no debe usar un ampersand (&) para asignar una dirección de matriz a un puntero.

Por ejemplo:


int arr [20];
int * ip;

Lo anterior es correcto ya que arr indica la dirección de la matriz. Aquí hay otro ejemplo:


ip = arr;

Lo anterior es incorrecto.

Podemos convertir implícitamente una matriz en un puntero. Por ejemplo:

A continuación se muestra una operación válida:


#include <iostream>
using namespace std;
int main() {
	int *ip;
	int arr[] = { 10, 34, 13, 76, 5, 46 };
	ip = arr;
	for (int x = 0; x < 6; x++) {
		cout << *ip << endl;
		ip++;
	}
	return 0;
}

Después de la declaración anterior, ip y arr serán iguales y compartirán propiedades. Sin embargo, es posible asignar una dirección diferente a ip, pero no podemos asignar nada a arr.

Ejemplo 2:

Este ejemplo muestra cómo cruzar una matriz usando sugerencias:

  1. Producción:
  2. Aquí hay una imagen del código:
  3. Explicación del Código:
  4. Confirme la variable de puntero de número entero ip.
  5. Confirme una matriz llamada arr y almacene 6 enteros en ella.
  6. Culo asignado a ip. La ip y arr serán iguales.
  7. Crea un bucle. La variable x-loop se creó para repetir los elementos de la matriz del índice 0 al 5.
  8. Imprime los valores almacenados por la dirección IP del puntero. Se devolverá un valor por iteración y se realizarán un total de 6 repeticiones. El endl es una palabra clave de C ++ que significa la última línea. Esta acción le permite mover el cursor a la siguiente línea después de imprimir cada valor. Cada valor se imprimirá en una sola línea.
  9. Para mover el puntero a la siguiente posición int después de cada iteración.

Fin del ciclo.

El programa debe devolver algo cuando se complete con éxito.

Fin del cuerpo funcional principal ().


#include <iostream>
using namespace std;
int main() {
	int  *ip = NULL;
	cout << "Value of ip is: " << ip;
	return 0;
}

Puntero nulo

Si no se va a asignar una dirección exacta, se puede asignar NULL a la variable de puntero. Debe hacerse durante la declaración. Dicho puntero se denomina puntero nulo. Su valor es cero y en muchas bibliotecas estándar se define como isthream.

Ejemplo 3:

  1. Producción:
  2. Aquí hay una imagen del código:
  3. Explicación del Código:
  4. Confirme la variable de puntero ip y asígnele un valor NULL.

Imprime el valor de ip de las variables de puntero junto con algo de texto en la consola.

El programa debe devolver valor una vez completado con éxito.

El final del cuerpo de la función principal ().

Consejos variables

Con C ++, puede manipular datos directamente desde la memoria de la computadora.


int *p;

El espacio de memoria se puede asignar o asignar según se desee. Esto es posible a través de variables de puntero.


int* p;

Las variables de puntero se centran en una dirección específica en la memoria de la computadora a la que prestan atención otras variables.

Puede declararse de la siguiente manera:

O,

En su ejemplo, determinamos la variable de puntero p.

Tendrá una dirección de memoria.


#include <iostream>

using namespace std;
int main() {
	int *p, x = 30;
	p = &x;
	cout << "Value of x is: " << *p;
	return 0;
}

El asterisco es el operador abandonado que significa puntero.

El puntero p es un valor entero en la dirección de memoria.

Ejemplo 4:

  1. Producción:
  2. Aquí hay una imagen del código:
  3. Explicación del Código:
  4. Declare una variable de puntero py una variable x con un valor de 30.
  5. Dar la dirección de la variable x ap.

Imprime un valor variable del puntero p junto a algún texto en la consola.

El programa debe devolver valor al completarse con éxito.

El final del cuerpo de la función principal ().

Implementación de consejos


#include <iostream>

using namespace std;
void test(int*, int*);
int main() {
	int a = 5, b = 5;
	cout << "Before changing:" << endl;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

	test(&a, &b);

	cout << "nAfter changing" << endl;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	return 0;
}

void test(int* n1, int* n2) {
	*n1 = 10;
	*n2 = 11;
}

Las funciones en C ++ solo pueden devolver un valor. Además, todas las variables declaradas en una función se asignan a la pila de llamadas de la función. Una vez que la función regresa, se eliminan todas las variables apiladas.

Los argumentos van de la mano con el valor, y cualquier modificación de las variables no cambia el valor de las variables reales pasadas. El siguiente ejemplo ayuda a ilustrar este concepto:

Ejemplo 5:

  1. Producción:
  2. Aquí hay una imagen del código:
  3. Explicación del Código:
  4. Cree un prototipo de una prueba de función nombrada que tomará dos parámetros enteros.
  5. Llame a la función principal (). Pondremos la lógica del programa dentro de su cuerpo.
  6. Declare dos variables enteras ayb, cada una con un valor de 5.
  7. Imprime texto en la consola. El final (línea final) moverá el cursor para comenzar a imprimir en la siguiente línea.
  8. Imprime un valor de variable a en la consola junto a otro texto. El final (línea final) moverá el cursor para comenzar a imprimir en la siguiente línea.
  9. Imprime el valor de la variable b en la consola junto a otro texto. El final (línea final) moverá el cursor para comenzar a imprimir en la siguiente línea.
  10. Cree una función de nomenclatura test () que incluya las direcciones de las variables ayb como parámetros.
  11. Imprime texto en la consola. N creará una nueva línea blanca antes de que se imprima el texto. El final (línea final) moverá el cursor para comenzar a imprimir en la siguiente línea después de imprimir el texto.
  12. Imprime un valor de variable a en la consola junto a otro texto. El final (línea final) moverá el cursor para comenzar a imprimir en la siguiente línea.
  13. Imprime el valor de la variable b en la consola junto a otro texto. El final (línea final) moverá el cursor para comenzar a imprimir en la siguiente línea.
  14. El programa debe devolver valor una vez completado con éxito.
  15. El final del cuerpo de la función principal ().
  16. Defina la prueba funcional (). La función debe tomar dos variables de puntero enteras * n1 y * n2.

Asignación de la variable de puntero * valor n1 10.

Asignación de la variable de puntero * valor n2 11.

Fin del cuerpo de la prueba funcional ().

Aunque se asignan nuevos valores a las variables ayb dentro de la prueba de función, una vez que se completa la llamada a la función, la función principal de la función externa no está representada.

El uso de sugerencias como argumentos de función ayuda a pasar la dirección real de la variable pasada en la función, y todos los cambios realizados a la variable se reflejarán en la función externa.

La memoria se puede asignar y desasignar dinámicamente mediante indicaciones.

El nombre de la matriz indica la base de la matriz.

Si desea asignar una dirección de matriz a un puntero, no use ampersand (&). Si no hay una dirección específica para asignar una variable de puntero, se le asigna un NULL.