Está en la página 1de 8

Programacin, Algoritmos y Estructuras de Datos.

Introduccin terica al Trabajo Prctico 4.


Tema: Punteros y Arreglos.

Tipos de Datos Bsicos y Estructurados


Enteros
Numricos
Datos Bsicos Reales
Caracteres

Datos Derivados Puntero

Estticos Arreglos
Internos
Datos Estructurados Listas, Pila, Cola
Dinmicos
rbol.
Externos Ficheros

Primer cuatrimestre de 2011 Pablo A. Garca


Programacin, Algoritmos y Estructuras de Datos.
Introduccin terica al Trabajo Prctico 4.
Tema: Punteros y Arreglos.

Tipos de Datos Bsicos y Estructurados


Enteros
Numricos
Datos Bsicos Reales
Caracteres

Datos Derivados Puntero

Estticos Arreglos
Internos
Datos Estructurados Listas, Pila, Cola
Dinmicos
rbol.
Externos Ficheros

Primer cuatrimestre de 2011 Pablo A. Garca


Programacin, Algoritmos y Estructuras de Datos.
Introduccin terica al Trabajo Prctico 4.
Tema: Punteros y Arreglos.

Punteros

Introduccin: el puntero es una de las caractersticas ms poderosas del lenguaje de


programacin C y tambin una de las capacidades ms difciles de dominar. Los punteros
nos permiten simular llamadas por referencia, crear y manipular estructuras de datos.

Definicin: (segn Deitel y Deitel)


Los punteros son variables que contienen direcciones de memoria como sus valores. Por lo
general una variable contiene directamente un valor especfico. Un puntero contiene la
direccin de una variable que contiene un valor especfico. En este sentido, un nombre de
variable se refiere directamente a un valor y un puntero se refiere indirectamente a
un valor.

Primer cuatrimestre de 2011 Pablo A. Garca


Programacin, Algoritmos y Estructuras de Datos.
Introduccin terica al Trabajo Prctico 4.
Tema: Punteros y Arreglos.

Declaracin:
int * ptr; ptr a & es un operador que regresa
int a; la direccin de su operando.
a=7; 7
ptr=&a;

Un puntero puede ser inicializado a 0, NULL o a una direccin. Un apuntador con valor NULL
no apunta a nada. Ponerlo a 0 es igual a NULL, pero se prefiere NULL.

La representacin del puntero en memoria sera:


ptr a
0xFF8C 0xFF0A 0xFF0A 7

El operador * se conoce como el operador de indireccin o de desreferencia, y nos retorna


El valor del objeto hacia el cual su operando apunta. Por ejemplo:

printf(%d, *ptr); /* Imprime el valor de la variable a, es decir, 7 */

Primer cuatrimestre de 2011 Pablo A. Garca


Programacin, Algoritmos y Estructuras de Datos.
Introduccin terica al Trabajo Prctico 4.
Tema: Punteros y Arreglos.
El especificador de formato %p dentro del printf extrae la direccin de memoria en formato
Hexadecimal.
Ejercicio ejemplificador (Problema 1 prctica 4):

#include <stdio.h> j
int j, k; 0x4080 1 ptr
int *ptr;
int main(void) 0x40C0 0x40A0
k
{
j = 1; 0x40A0 2
k = 2;
ptr = &k;
printf("\n");
printf("j tiene el valor %d y est almacenado en %p\n",j,&j);
printf("k tiene el valor %d y est almacenado en %p\n",k,&k);
printf("ptr tiene el valor %p y est almacenado en %p\n",ptr,&ptr);
printf("El valor del entero al que apunta ptr es %d\n", *ptr);
return 0;
}
Primer cuatrimestre de 2011 Pablo A. Garca
Programacin, Algoritmos y Estructuras de Datos.
Introduccin terica al Trabajo Prctico 4.
Tema: Punteros y Arreglos.

Arreglos
Introduccin: Los arreglos sirven como una introduccin al tema de las estructuras de datos.
Los arreglos o arrays son estructuras de datos formadas por elementos del mismo tipo. Una
estructura de datos est formada por elementos relacionados por el mismo nombre pero de
distintos tipos. Los arreglos y las estructuras son entidades estticas debido a que conservan
su tamao durante la ejecucin del programa. Tambin existen las estructuras dinmicas de
datos como son las listas, colas o pilas, que pueden crecer o encogerse durante la ejecucin
del programa [Deitel y Deitel].
ARREGLOS UNIDIMENSIONALES

Definicin: Coleccin de datos del mismo tipo que se referencian por un mismo nombre y que son
almacenados en posiciones de memoria contiguas, donde la posicin de memoria ms baja corresponde
al primer elemento o componente del arreglo.
Los tipos de elementos almacenados en el arreglo pueden ser cualquier tipo de dato de C.
Ejemplos de arreglos:
Un listado telefnico.
la edad de los alumnos de una clase
las temperaturas de cada da de un mes de una ciudad, etc.

Primer cuatrimestre de 2011 Pablo A. Garca


Programacin, Algoritmos y Estructuras de Datos.
Introduccin terica al Trabajo Prctico 4.
Tema: Punteros y Arreglos.

Como declarar los arreglos: Los arreglos ocupan espacio en memoria. El programador
especifica el tipo de cada elemento y el nmero de elementos para cada arreglo para que
la PC pueda reservar la memoria necesaria. Para indicarle a la PC que reserve 6 elementos
para el arreglo entero C hacemos: int c[6];
Otros arreglos pueden ser: char b[10]; o float a[1000];

C[0] -45 C: Nombre del arreglo.


El nmero de posicin que aparece dentro de los corchetes
C[1] 6
Se conoce como subndice del arreglo.
C[2] 0 El subndice puede ser un entero o una expresin entera:
C[3] 72 C[0]=-45;
C[2]=0;
C[4] 1543
C[a+b]+=2; /* C[4]= C[4]+2; C[4]=1545; */
C[5] -89
Por ejemplo: para imprimir la suma de los 3 primeros
Posicin numrica del elementos del arreglo hacemos:
elemento dentro del arreglo printf( %d, C[0]+C[1]+C[2] );

Primer cuatrimestre de 2011 Pablo A. Garca


Programacin, Algoritmos y Estructuras de Datos.
Introduccin terica al Trabajo Prctico 4.
Tema: Punteros y Arreglos.

Ejemplo integrador usando un arreglo: en el siguiente programa usamos una estructura de


repeticin for para inicializar un arreglo de enteros con los primeros 10 nmeros impares,
e imprimimos el arreglo en forma tabular.
/*Inicializamos el arreglo*/
#include<stdio.h>

main()
{
int arreglo[10],i;
for(i=0;i<=9;i++)
arreglo[i]=2*i+1;
printf("%s%10s\n","Subindice","Valor");
for(i=0;i<=9;i++)
printf("%9d%10d\n",i,arreglo[i]);
getchar();
return 0;
}

Primer cuatrimestre de 2011 Pablo A. Garca

También podría gustarte