You are on page 1of 3

PROGRAMACION 2 PUNTEROS EN LENGUAJE C

Orientador: Ing. JESS ENRIQUE DURN V.


LOS PUNTEROS permiten que nos dirijamos a los valores contenidos en variables, haciendo uso de la
direccin de memoria que le es asignada a una variable al momento de realizarse la declaracin de la
misma.
Al declarar las variables a, b, c con sus tipos de datos; se pueden declarar punteros a dichas variables,
cuyos tipos de datos van a depender del tipo de dato de la variable a la que apuntan:
int x; // declaracin de la variable x de tipo entero
int *px; // declaracin del puntero *px de tipo entero
x = 27; // asignacin del valor 27 a la variable x
px = &x; // asignacin de la direccin de la variable x, al puntero px
Por medio de la instruccin
px = &x se lleva a cabo la asignacin de la direccin de la variable x al
puntero px, en ste queda almacenada la direccin de x; por lo tanto, *px equivale a x y de igual
manera px equivale a &x.
En el siguiente ejemplo, tenemos la aplicacin de los punteros en lenguaje C.
// PUNTEROS EN LENGUAJE C
// Intercambio de los contenidos de dos variables
#include <stdio.h>
#include <conio.h>
main()
{
int x, y, *px, *py;
int aux;
x = 19;
px = &x;

y = 57;
py = &y;
// Antes de realizar el intercambio
printf("Los contenidos de las variables son: x = %d y y = %d\n", x, y);
// Realizamos el intercambio
aux = *px;
*px = *py;
*py = aux;
printf("Los contenidos de las variables son: x = %d y y = %d\n", x, y);
getch();

Los punteros pueden ser pasados como argumentos a una funcin, en cuyo caso, como parmetro actual
se enviar la direccin (o direcciones, si son varios) del operando a procesar dentro de la funcin; y por lo
tanto, el parmetro formal (ya que lo que se enva es una direccin), debe ser UN PUNTERO. Veamos en
el siguiente ejemplo, la misma tarea del punto anterior pero pasando parmetros por referencia- es
decir, enviando como parmetros las direcciones de x y de y.
// Paso de punteros a funciones
// Intercambio de los contenidos de dos variables
#include <stdio.h>
#include <conio.h>
void f_intercambio(int *px, int *py); // declaracin de la funcin f_intercambio( )
main()
{
int x, y;
x = 19;
y = 57;
// Impresion de los valores de x y y, ANTES de llamar a la funcion f_intercambio()
printf("\n ANTES DE LLAMAR A LA FUNCION...\n");
printf("Los contenidos de las variables son: x = %d y y = %d\n", x, y);
// Llamamos la funcion f_intercambio()
f_intercambio(&x, &y);
// Impresion de los valores de x y y, DESPUES de llamar a la funcion f_intercambio()
printf("\n DESPUES DE LLAMAR A LA FUNCION...\n");
printf("Los contenidos de las variables son: x = %d y y = %d\n", x, y);
getch();
}
void f_intercambio(int *px, int *py)
{
int aux;
aux = *px;
*px = *py;
*py = aux;

printf("\n\n DENTRO DE LA FUNCION...\n");


// Impresion de los valores de x y y, DENTRO DE LA FUNCION f_intercambio()
printf("Los contenidos de las variables son: x = %d y y = %d\n", *px, *py);

* Como se puede observar LOS CAMBIOS HECHOS SOBRE LAS VARIABLES EN LA FUNCION SE REFLEJAN EN
LA FUNCION PRINCIPAL main( ).

Con el objetivo de comparar el efecto que tiene el uso de los parmetros por referencia en una funcinse presenta el ejemplo inmediatamente anterior, pero aplicando el uso de parmetros por valor-.
// Paso de punteros a funciones
// Intercambio de los contenidos de dos variables
#include <stdio.h>
#include <conio.h>
void f_intercambio(int px, int py);
main()
{
int x, y;
x = 19;
y = 57;
// Impresion de los valores de x y y, ANTES de llamar a la funcion f_intercambio()
printf("\n ANTES DE LLAMAR A LA FUNCION...\n");
printf("Los contenidos de las variables son: x = %d y y = %d\n", x, y);
// Llamamos la funcion f_intercambio()
f_intercambio(x, y);
// Impresion de los valores de x y y, DESPUES de llamar a la funcion f_intercambio()
printf("\n DESPUES DE LLAMAR A LA FUNCION...\n");
printf("Los contenidos de las variables son: x = %d y y = %d\n", x, y);
}

getch();

void f_intercambio(int px, int py)


{
int aux;
aux = px;
px = py;
py = aux;
printf("\n DENTRO DE LA FUNCION...\n");
// Impresion de los valores de x y y, DENTRO DE LA FUNCION f_intercambio()
printf("Los contenidos de las variables son: px = %d y py = %d\n", px, py);
}

** Saque sus propias conclusiones, una vez compile y ejecute los programas.

You might also like