Punteros

2/16
Recursos

Aportes 16

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

El tema de punteros puede ser complicado de entender la primera vez que te encuentras con 茅l, te recomiendo ver esta clase las veces que sea necesario para comprenderlo, antes de pasar a la siguiente 馃槂

Este tema es muy complicado para mi, pero estoy decidido a entenderlo, te comparto este fragmento que nos ayudara a llegar lejos.

int main()
{
    int numero = 5896;
    int *puntero = №
    cout << "Direccion de memoria del numero: " << &numero << endl;
    cout << "Direccion del puntero: " << &puntero << endl;
    cout << "Direccion de memoria a la que apunta el puntero: " << puntero << endl;
    cout << "Valor del puntero: "<< *puntero << endl;

    // cambiando el valor del numero desde el puntero
    *puntero = 1111;
    // Mostrando el valor cambiado
    cout << numero ;
    return 0;
}

El computador seria como un libro馃摌
Los punteros (*) serian como un capitulo 馃搼
La direcci贸n de memoria (&) indicar铆a la posici贸n donde se encuentra el capitulo #鈨

los punteros tema super interesante es un tema complejo pero super poderoso.

Punteros, casi me cuesta Algoritmos y Estructuras de datos en C durante la Universidad.

Para declarar un punter usamos:

char *puntero;

Pero que pasa si lo declaramos como:

char* puntero;

Y que pasaria si declaramos dos variables en la misma linea? como en:

char* puntero, variable;

En este caso, variable es del tipo char o del tipo puntero a char?
La respuesta es: variable es del tipo char (no es un puntero).
Por este motivo conviene poner el * pegado a cada puntero y no pegado a char, como en char*.
Si queremos declarar dos punteros a char en la misma l铆nea, quedaria:

char *puntero1, *puntero2;

Asi queda bien claro el tipo de cada uno y no da lugar a confusi贸n.

Punteros en C++

Los punteros son variables que se utilizan para almacenar direcciones de memoria, puntualmente las direcciones de memoria que fueron asignadas a variables convencionales en las que se almacenan datos de distinto tipo.

Detalles al crear y usar punteros en C++

  • El tipo de dato del apuntador debe coincidir con el de la variable cuya posici贸n en memoria apuntan.

  • Siempre que queremos usar el apuntador debemos anteponer el asterisco (*) para indicar que usaremos el valor en la posici贸n de memoria apuntada.

  • De no usar el asterisco el comportamiento ser铆a impredecible. Estaremos haciendo uso de la direcci贸n de memoria m谩s no del valor almacenado en 茅sta.

  • Despu茅s de usar un puntero, especialmente si trabajamos con arreglos o matrices, es MUY recomendable liberar la memoria utilizada con la funci贸n delete (tal como en el ejemplo).

  • Un puntero o apuntador puede ser de cualquier tipo de dato, inclusive los podemos usar con tipos complejos.

<h5>Ejemplo en Codigo</h5>
#include <iostream>
#include <string>

using namespace std;

int main() {
    
    char *puntero = NULL; //Declaramos un puntero
    //Es recomendable inicializar un puntero en null, para detectar errores f谩cilmente

    char letra; //Declaramos una variable primitiva

    puntero = &letra; //Asignamos al puntero la direcci贸n de memoria de la variable primitiva

    *puntero = 'x'; //Modificamos la variable a trav茅s del puntero

    cout << letra; //Muestra x por pantalla
}

ahora recuerdo por que pocas personas entiende los punteros, si no lo ves de esta manera es dificil entenderlo

Ejemplo sencillo:

#include <iostream>

using namespace std;

int main() {

  int someVariable = 3;

  // returns value stored in another variable memory address
  int *somePointer = &someVariable;

  // prints someVariable memory address
  cout << somePointer << endl;

  // prints someVariable value
  cout << *somePointer << endl;
}

Los nombre de variable son un nombre alternativo para las direcciones de memoria. Las direcciones de memoria son 煤nicas y almacenan valores.

La memoria din谩mica es un espacio que puede variar por lo que no se le asigna un limite especifico.

Los punteros son tipos especiales de variables que se utilizan para almacenar la direcci贸n de memoria de otra variable.