HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

tutorial: el uso de pointers, parte I

 

 

pointer.jpg (50856 bytes)

 

Descripción general:

Dé click aquí para la PARTE II del tema

En ANSI C, los pointers o apuntadores son una forma de manejar el acceso a localidades de memoria a través de direccionamiento indirecto. En aplicaciones de embedded systems, los pointers tienen como aplicación principal, el permitir ingresar y recibir parámetros de una función ó bien, para el manejo de arreglos.

Para declarar un pointer usamos la expresión "int *p" (el nombre del pointer puede ser cualquiera, por ejemplo *wiz). Aquí estamos reservando una localidad de memoria para almacenar un valor que es entero (int) y que será accesada a través del pointer p, es decir, se trata, como ya se dijo, de direccionamiento indirecto.

La expresión "*p" significa: "el contenido de la dirección de memoria a donde esté apuntando el pointer p". La expresión "&x" significa: "la dirección de memoria en donde se encuentra almacenada la variable x".

Una vez que termine de revisar esta introducción al uso de los pointers, pase a la PARTE II de tema, en donde encontrará información sobre el uso de pointers para permitir la entrada y salida de parámetros que se pasan a una función "por referencia".

Utilizaremos un programa muy simple como ejemplo ilustrativo para entender como opera un pointer y las expresiones que se utilizan. El simulador de MPLAB nos permite ejecutar el programa paso a paso e ir monitoreando el contenido de la memoria RAM, en donde podemos observar 3 localidades: la dirección en donde se almacena el pointer "p" (70H), la dirección en donde se almacena la variable "x" (71H), y la dirección en donde se almacena la variable "y" (73H).

1. ANTES DEL INICIO DE LA SIMULACION DEL PROGRAMA, LA MEMORIA RAM ESTA EN CEROS

wpe3.jpg (71962 bytes)

 

2. "int x=1,y=2;, int *p;" LAS LOCALIDADES 71H Y 73H SE CARGAN CON LOS VALORES DE x=1, y=2. SE RESERVA UNA LOCALIDAD DE MEMORIA (70H) PARA EL ALMACENAMIENTO DE p (EL COMPILADOR SABE QUE SE TRATA DE UN POINTER PORQUE AL DEFINIRLO SE UTILIZO LA EXPRESION *p.)

wpe4.jpg (70573 bytes)

 

3. "p=&x;" LA LOCALIDAD RESERVADA PARA EL POINTER p (70H) SE CARGA CON EL VALOR DE LA DIRECCION EN DONDE SE ENCUENTRA x, ES DECIR, LA 71H.

wpe6.jpg (68101 bytes)

 

4. "y=*p;" LA LOCALIDAD EN DONDE SE ALMACENA LA VARIABLE "y" (73H), SE CARGA CON EL CONTENIDO DE LA LOCALIDAD HACIA DONDE ESTA APUNTANDO EL POINTER p, ES DECIR EL VALOR 1

wpe7.jpg (68037 bytes)

 

5. "*p=3;" EL CONTENIDO DE LA LOCALIDAD A DONDE ESTA APUNTANDO EL POINTER (71H), ES IGUAL A 3.

wpe8.jpg (67148 bytes)

Oprima aquí para la PARTE II del tema