Está en la página 1de 4

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;
}

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

Declaracion 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.
Ejemplo
#include <stdio.h> Trazo
#include <iostream.h>
#include <conio.h> Dir varor
int main()
{ 100 1
int a, b, c, *p1, *p2;
&a a
p1 = &a; // Paso 1. La dirección de a
es asignada a p1 200 0
*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 1
*p2 = 2; // Paso 4. p2 (b) es igual a 2.
&c c
Equivale a b = 2;
p1 = p2; // Paso 5. El valor del p1 = p2
300
*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? 300
103 500
P1=p2 &p2 p2 *p2
*p1 = 1; // Paso 10. c = 1
cout<<a<<"\t"<<b<<"\t"<<c<<endl; //
Paso 11. ¿Qué se imprime?
113
getche();
return 0;
}
Ejemplo con Funciones

#include <stdio.h>
#include <iostream> 100 7
#include <conio.h>
Using namespace std; &a a
void intercambio(int x,int y);
int main() 200 10
{
int a, b; &b b
a=7;
b=10; 300 10
cout<<" a= "<<a<<" b = "<<b<<endl;
intercambio(a,b);
&x x
cout<<" a= "<<a<<" b = "<<b<<endl;
getche();
400 7
return 0;
}
void intercambio(int x,int y) &y y
{int z;
z=x; 500 7
x=y;
y=z; &y z
}

Referencia

#include <stdio.h>
#include <iostream> 100 7
#include <conio.h>
Using namespace std; &a a
void intercambio(int &x,int &y);
int main() 200 10
{
int a, b; &b b
a=7;
b=10; 100 10
cout<<" a= "<<a<<" b = "<<b<<endl;
intercambio(a,b);
&x x
cout<<" a= "<<a<<" b = "<<b<<endl;
getche();
200 7
return 0;
}
void intercambio(int &x,int &y) &y y
{int z;
z=x; 500 7
x=y;
y=z; &z z
}

Puntero

#include <stdio.h>
#include <iostream> 100
#include <conio.h>
Using namespace std; &a a
void intercambio(int *x,int *y);
int main() 200
{
int a, b; &b b
a=7;
b=10; 300
cout<<" a= "<<a<<" b = "<<b<<endl;
intercambio(&a,&b); &x x *x
cout<<" a= "<<a<<" b = "<<b<<endl;
getche(); 400
return 0;
} &y y *y
void intercambio(int *x,int *y)
{int z; 500
z=*x;
*x=*y; &z z
*y=z;
}

Uso del * y &

° El símbolo * se usa para DEFINIR una variable de tipo puntero.


 El símbolo & se usa para indicar la dirección de una variable “normal”.
 El símbolo * se usa para ACCEDER al valor que guarda un puntero.
 El símbolo & se usa sólo en la invocación de funciones, de forma que se pone delante
de los parámetro reales de E/S
 Cuando un parámetro formal es de E/S en el prototipo y cabecera se indica con un tipo
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 el programa principal.
 Los * sólo se usan en las funciones

También podría gustarte