Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Investigación: Punteros 02 DE MARZO DEL 2021 Hector Campos Serna Código: 215646659 SEDAI21A-11 D-11 Maestro: Ramiro Coronel Lupercio Punteros Objetivo. - Aprender los conceptos básicos de punteros, así como su clasificación y forma de estructuras. Punteros. 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. En C ++ se les asigna un espacio de memoria en el cual se va almacenar el valor que se le asigne en algún punto de la aplicación a esa variable, el tamaño de dicho espacio va depender del tipo de dato. Cada uno de los espacios de memoria cuenta con una dirección para identificarlo, esta dirección es por lo general un número en representación hexadecimal. Es precisamente ese número correspondiente a la dirección lo que se almacena en un puntero. Ejemplo de sintaxis: 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”. ▪ Un puntero o apuntador puede ser de cualquier tipo de dato, inclusive los podemos usar con tipos complejos. Puntero paso por referencia Hay veces que nos interesa que una función modifique una variable que no pertenece a ella, es decir, fuera de su ámbito. En C/C++ es imposible pasar una variable por referencia como en otros lenguajes y hay que hacerlo a través de punteros. La idea es que como solo se puede pasar el valor de una variable a una función lo que hacemos es pasar la dirección de una variable a través de un parámetro de puntero y luego con el operador de indirección podemos acceder al contenido de la variable original. Básicamente cuando se habla de paso por referencia se refiere a que se maneja directamente la variable y los cambios realizados dentro de la función le afectarán también fuera. El paso por referencia se refiere a que se pasa el mismo valor del parámetro desde la función/método cliente. Al ser el mismo valor, los cambios realizados directamente en la función/método sobre el valor del parámetro serán reflejados al terminar la ejecución de la función/método. Exemplo: #include <iostream> void sumar (int &); int main() { int n = 4; sumar(n); std::cout << n << std::endl; system("pause"); return 0; } void sumar(int &x) { x = x + 1; std::cout << x << std::endl; } Puntero paso por valor Con el puntero paso por valor se crea una copia local de la variable dentro de la función. Con esto se refiere a que se pasa una copia del valor del parámetro desde la función/método cliente. Al ser una copia, los cambios realizados directamente en la función/método sobre el valor del parámetro no serán reflejados al terminar la ejecución de la función/método Ejemplo en C: #include <stdio.h> void pasoPorValor(int i) { i = 50; } int main() { int i = 10; pasoPorValor(i); printf("%d\n", i); return 0; } Diferencia entre puntero paso por valor y paso por referencia Cuando es por valor, la información de la variable se almacena en una dirección de memoria diferente al recibirla en la función, por lo tanto, si el valor de esa variable cambia no afecta la variable original, solo se modifica dentro del contexto de la función. Cuando es por referencia, la variable que se recibe como parámetro en la función apunta exactamente a la misma dirección de memoria que la variable original por lo que si dentro de la función se modifica su valor también se modifica la variable original. La manera más fácil de entenderlo: Bibliografía: https://www.codingame.com/playgrounds/51214/manejo-dinamico-de-memoria-y- polimorfismo-practica-4/punteros-en-c https://www.programarya.com/Cursos/C++/Estructuras-de-Datos/Punteros https://es.stackoverflow.com/questions/1493/cu%C3%A1l-es-la-diferencia-entre-paso-de- variables-por-valor-y-por-referencia https://programaciondummies.wordpress.com/2014/12/04/paso-por-valor-o-por- referencia/ https://www.codingame.com/playgrounds/51214/manejo-dinamico-de-memoria-y-polimorfismo-practica-4/punteros-en-c https://www.codingame.com/playgrounds/51214/manejo-dinamico-de-memoria-y-polimorfismo-practica-4/punteros-en-c https://www.programarya.com/Cursos/C++/Estructuras-de-Datos/Punteros https://es.stackoverflow.com/questions/1493/cu%C3%A1l-es-la-diferencia-entre-paso-de-variables-por-valor-y-por-referencia https://es.stackoverflow.com/questions/1493/cu%C3%A1l-es-la-diferencia-entre-paso-de-variables-por-valor-y-por-referencia
Compartir