Facultad de Ingeniería de Sistemas e Informática UNMSM
PROGRMACION MODULAR
PUNTEROS
Definición. - Un puntero es una variable, cuyo valor es la dirección de memoria de otra
variable. Cuando una variable se declara, se asocian tres atributos: nombre, tipo y
dirección en memoria. Al valor, o contenido de una variable se accede por medio de su
nombre. A la dirección de la variable se accede por medio del operador de dirección &.
Ejemplo:
int x; 500 Dirección (Hexadecimal)
Nombre X 100
int Tipo
Si el valor de la variable se conoce se representa en el interior de la caja.
Ejemplo: Obtener el valor y la dirección de una variable.
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
int main() {
int x,*px;
x=100;
cout<<"Contenido de X= "<<x<<endl;
cout<<"Direccion de &x = "<<&x<<endl;
px=&x;
cout<<"Contenido de X= "<<*px<<endl;
cout<<"Direccion de px = "<<px<<endl;
cout<<"Direccion de px = "<<&px<<endl;
getche();
return 0; }
Fundamentos de Programación y Algorítmica / EPIS 2020-I 1
Facultad de Ingeniería de Sistemas e Informática UNMSM
Operadores
Existen dos operadores especiales para trabajar con punteros & y el *.
& devuelve la dirección de memoria de su operando
* devuelve el contenido de la variable apuntada por el puntero
Declaración de punteros
Una variable tipo puntero se declara bajo el siguiente formato:
Formato:
< tipo de dato apuntado> *<identificador de puntero>
int identificador
float valido
char
El * tiene dos funcione, declarar variables puntero y acceder al interior de la celda.
USO
* &
El símbolo * se usa para DEFINIR una El símbolo & se usa para indicar la dirección
variable de tipo puntero. de una variable “normal”.
El símbolo * se usa para ACCEDER al valor El símbolo & se usa sólo en la invocación de
que guarda un puntero. funciones, de forma que se pone delante de
los parámetros reales de E/S.
Cuando un parámetro formal es de E/S en el
prototipo y cabecera se indica con un tipo Los & sólo se usan en el programa principal.
puntero, esto es, poniendo un * delante del
nombre.
En el cuerpo de la función los argumentos
formales que son parámetros de E/S se usan
con un * delante.
Los * sólo se usan en las funciones.
Fundamentos de Programación y Algorítmica / EPIS 2020-I 2
Facultad de Ingeniería de Sistemas e Informática UNMSM
Ejemplo
#include <stdio.h> Trazo
#include <iostream>
#include <conio.h> Dir varor
int main()
{ 100
int a, b, c, *p1, *p2;
&a a
p1 = &a; // Paso 1. La dirección de a es
asignada a p1 200
*p1 = 1; // Paso 2. p1 (a) es igual a 1. Equivale
a a = 1; &b b
p2 = &b; // Paso 3. La dirección de b es
asignada a p2 300
*p2 = 2; // Paso 4. p2 (b) es igual a 2. Equivale
&c c
a b = 2;
p1 = p2; // Paso 5. El valor del p1 = p2
*p1 = 0; // Paso 6. b = 0
400
p2 = &c; // Paso 7. La dirección de c es
asignada a p2 &p1 p1 *p1
*p2 = 3; // Paso 8. c = 3
cout<<a<<"\t"<<b<<"\t"<<c<<endl; //
Paso 9. ¿Qué se imprime?
500
*p1 = 1; // Paso 10. b = 1 &p2 p2 *p2
cout<<a<<"\t"<<b<<"\t"<<c<<endl; //
Paso 11. ¿Qué se imprime?
getche();
return 0;
}
Fundamentos de Programación y Algorítmica / EPIS 2020-I 3