Un puntero se le llama para entendernos mejor un tipo de dato que apunta a una dirección de la memoria fÃsica o RAM, Esta RAM se puede decir que está compuesta por bloques y cada uno tiene un numero asignado que se le llama (dirección de memoria). Para explicarme mejor, cada vez que uno crea una variable o declaro un tipo de dato, este se asocia a una parte de la memoria, y si queremos acceder a esa parte de la memoria deberÃamos usar un puntero.
En C++ un puntero se declara anteponiendo un asterisco (*) al nombre del tipo de dato.
int *mipt;
En este ejemplo mipt es un puntero de tipo int (integer), se pueden declarar punteros de cualquier tipo de datos.
En este caso mipt se utilizara para trabajar solo con su posición en la memoria. Se le podrÃa asignar un valor pero para acceder a él seria de otra forma.
*mipt = 5;
Aquà asignamos un valor a esa dirección de memoria.
Si pusiéramos. mipt = 5; sin el asterisco lo que estarÃamos diciendo es que su posición en la memoria seria la 5, cosa que no estarÃa bien, ya que la memoria utiliza números hexadecimales, ejemplo 0xff8.
Representación grafica.
Con esto no quiero que confundan un Array(Matrix). Pueden ver que los nuemeros dentro de los cuadrados son enteros, es decir esto serian los valores en una dirección de memoria, cual es la dirección pues los números hexa que están debajo. Como se verÃa esto. AsÃ
int *mipt; si le asignamos la primero dirección su valor seria el 5 verdad; para asignárselo seria asÃ. Recuerden sin el asterisco.
mipt = 0xff1; entonces su valor es 5. Pero si ponemos esto. mipt = 0xff3; ¿Cuál serÃa su valor? Pues el 30.
La verdad cuando se trabaja con punteros no se le asigna las direcciones de esta forma. Simplemente se les igualas a otros punteros o tipos de datos ya creados normalmente en los constructores de las class para usar su valor.
