![]() Directorio WAP para móvil, Tablet, iPhone o Smartphone Centro de Noticias de la Universidad de Oriente |
|
|
||
lunes julio 11, 2016 Los punteros son variables que almacenan direcciones de memoria de otra variable. El concepto de punteros es bastante complejo en un principio y puede llevar a pensar que no tienen una gran utilidad, muy lejos está la realidad. El manejo de punteros es fundamental para conceptos futuros como la creación y liberación de objetos en tiempo de ejecución de un programa. Hemos visto las estructuras de datos tipo vector y matrices, pero hay otro tipo de estructuras llamadas estructuras dinámicas que requieren obligatoriamente el empleo de punteros y resuelven otro conjunto de problemas que las estructuras estáticas no pueden.Un puntero se definen de la siguiente manera: <tipo de dato al que apunta> * <nombre del puntero>; Punteros a tipo de dato numéricoDefinición de un puntero que apunta a un entero: int *pe; Asignación de contenido a un puntero: int x=9; pe=&x; Un puntero contiene una dirección, aquí le asignamos la dirección de la variable entera x, por eso debemos anteceder el símbolo &. Podemos asignar un valor a lo apuntado por el puntero:int x=9; pe=&x; *pe=5; // la variable x almacena 5 cout <<x; //5 Aquí le asignamos el valor 5 a la dirección a la cual apunta el puntero pe, es decir, a la variable entera x. Para indicar que el valor 5 es asignado a donde apunta el puntero pe, antecedemos al nombre del puntero el símbolo *. Impresión: No se puede imprimir el contenido de un puntero, que es una dirección de memoria, lo que imprimimos es el contenido de la variable a la cual apunta el puntero: int x=9; pe=&x; cout <<*pe; // imprime 9 Problema 1:Confeccionar un programa que defina dos punteros a tipos de datos int y float. Acceder mediante estos punteros a otras variables de tipo int y float. Programa:#include <iostream> using namespace std; void main() { int x = 10; int *pe; pe = &x; cout << x; // 10 cout << ""; cout << *pe; // imprime lo apuntado por pe: 10 cout << ""; *pe = 5; //asignamos 5 a lo apuntado por pe cout << x; // 5 cout << ""; float valor = 10.9; float *pf; pf = &valor; cout << *pf; //imprimime lo apuntado por pf: 10.9 cin.get(); } Este proyecto lo puede descargar en un zip desde este enlace : Puntero1.zipVamos a hacer el seguimiento del programa anterior suponiendo que somos el sistema operativo asignando espacios en la memoria ram para localizar las variables de memoria:Definimos la variable x (el sistema operativo le reserva espacio en la dirección de memoria 1000 y almacena en ese espacio el valor 10): int x=10; Dir. de Mem. Contenido Nombre de variable 1000 10 x Definimos otra variable pero en este caso de tipo puntero a entero y se le asigna el espacio de memoria 1004 (por el momento no guardamos nada en esta variable): int *pe; Dir. de Mem. Contenido Nombre de variable 1000 10 x 1004 pe Inicializamos el puntero pe con la dirección de la variable x: pe=&x; Dir. de Mem. Contenido Nombre de variable 1000 10 x 1004 1000 pe Modificamos el espacio apuntado por la variable pe (es decir a partir de la dirección 1000 almacenamos el valor 5): *pe=5; Dir. de Mem. Contenido Nombre de variable 1000 5 x 1004 1000 pe Ahora hacemos algo similar para trabajar con una variable float y un puntero a un tipo de dato float. Definimos una variable float: float valor=10.9; Dir. de Mem. Contenido Nombre de variable 1000 5 x 1004 1000 pe 1008 10.9 valor Definimos un puntero a tipo de dato float: float *pf; Dir. de Mem. Contenido Nombre de variable 1000 5 x 1004 1000 pe 1008 10.9 valor 1012 pf Recuperamos la dirección de la variable float: pf=&valor; Dir. de Mem. Contenido Nombre de variable 1000 5 x 1004 1000 pe 1008 10.9 valor 1012 1008 pf
int x1=50; Dir. de Mem. Contenido Nombre de variable 1000 50 x1 int x2=100; Dir. de Mem. Contenido Nombre de variable 1000 50 x1 1004 100 x2 int *pun1,*pun2; Dir. de Mem. Contenido Nombre de variable 1000 50 x1 1004 100 x2 1008 pun1 1012 pun2 pun1 = &x1; Dir. de Mem. Contenido Nombre de variable 1000 50 x1 1004 100 x2 1008 1000 pun1 1012 pun2 pun2 = pun1; Dir. de Mem. Contenido Nombre de variable 1000 50 x1 1004 100 x2 1008 1000 pun1 1012 1000 pun2 *pun1 = 2000; Dir. de Mem. Contenido Nombre de variable 1000 2000 x1 1004 100 x2 1008 1000 pun1 1012 1000 pun2 pun2 = &x2; Dir. de Mem. Contenido Nombre de variable 1000 2000 x1 1004 100 x2 1008 1000 pun1 1012 1004 pun2 x1 = 1; Dir. de Mem. Contenido Nombre de variable 1000 1 x1 1004 100 x2 1008 1000 pun1 1012 1004 pun2 x2 = 2; Dir. de Mem. Contenido Nombre de variable 1000 1 x1 1004 2 x2 1008 1000 pun1 1012 1004 pun2 *pun1 = 500; Dir. de Mem. Contenido Nombre de variable 1000 500 x1 1004 2 x2 1008 1000 pun1 1012 1004 pun2 *pun2 = 600; Dir. de Mem. Contenido Nombre de variable 1000 500 x1 1004 600 x2 1008 1000 pun1 1012 1004 pun2 |
||
— @INFOUDO.OFICIAL
Comenta o lee lo que otros opinan |
||
COMPÁRTELO:Indica que te gusta y comparte |
||
![]() ![]() ![]() ![]() ![]() |
||
También te puede interesar: NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS. |
||
« Herencia en C++ | Parámetros de métodos de tipo puntero » |
||
![]() |
||
Buscador:
|
||
Síguenos en las redes sociales![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mis cuentas socialesOtras | LinktreeMóvil: (0426 683 6955 - 0412 8226575) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55 / +58 (0412) 822.65.75 ![]() |
||
|
||
|