Logo Studenta

1 Invest Punteros - Hector l

¡Estudia con miles de materiales!

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

Continuar navegando