Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntdores Clase
Apuntdores Clase
Ejercicios
PUNTEROS
(
(APUNTADORES)
)
Sugerencias y herramientas para crear para crear y presentar diapositivas en
formato panormico
Contenido
Direcciones en memoria
Concepto de puntero
(apuntador)
P t
Puntero
nullll y void
id
Punteros a punteros
Punteros a Arrays
Arrays de punteros
Punteros a cadenas
Aritmtica de p
punteros
Punteros constantes frente
a punteros a constantes
Punteros como argumento
de funciones
Punteros a funciones
Punteros a estructuras
Ejercicios
j
Direccin de memoria
n;
Asocia al nombre n, el tipo
p int y la direccin de alguna
g
posicin de memoria donde se almacena el valor de n
Cont
Cont
Printf (%d,n);
P i tf (%p,&n);
Printf
(% & )
Ejemplo 10.1
10 1
#include
#
l d <stdio.h>
d h
#include <stdlib.h>
int main ()
{
int n=75;
printf("n=%d\n",n);
printf("&n=%p\n"
printf(
&n=%p\n ,&n);
&n);
system("pause");
return 0;
}
Ejemplo 10.2
10 2
#include <stdio.h>
#i l d <stdlib.h>
#include
< dlib h>
int main ()
{
i n=75;
int
75
int*p=&n;
printf("n=%d, &n=%p, p=%p\n",n,&n,p);
printf("&p=%p\n",&p);
i tf("& % \ " & )
system("PAUSE");
return 0;
}
Declaracin de punteros
Al igual
g
que cualquier
q
q
variable,, las variables p
punteros
han de ser declaradas antes de utilizarlas. La
declaracin de una variable puntero debe indicar al
compilador el tipo de dato al que apunta el puntero;
para ello se hace preceder a su nombre con un
asterisco (*)
<tipo de dato apuntado>*<identificador de puntero>
Fl t*f
Float*f;
Inicializacin de punteros
Int i;
Int *p;
P=&i; /*asigna la direccin de i a p*/
*p=50;
p 50; /*asigna
/ asigna un valor a la direccin de memoria
memoria*//
Indireccion de punteros
El uso de un puntero
para obtener el valor
al que apunta
apunta, es decir,
decir
su dato apuntado se
denomina indireccionar
el puntero
#include <stdio.h>
#include <stdlib.h>
<stdlib h>
char c;
int main()
char *pc;
pc=&c;
for(c='A';c<='Z';c++)
printf("%c",*pc);
printf("\n");
system("pause");
return 0;
#define NULL 0
Int *ptr=0;
Void *prt
Punteros a punteros
Punteros y Arrays
Se p
pueden direccionar arrays
y como si fueran
punteros y punteros como si fueran arrays. La
posibilidad de almacenar y acceder a punteros y
arrays, implica que se pueden almacenar cadenas
de datos en elementos de arrays. Sin punteros eso
no es posible, ya que no existe el tipo de dato
cadena en C. no existen variables de cadena,
i
nicamente
constantes de
d cadena
d
Arrays de punteros
abril,mayo,junio,julio,agosto,septiembre,
octubre,noviembre,diciembre};
b i b di i b }
Punteros de cadenas
Los p
punteros se p
pueden utilizar en lugar
g de ndices
de arrays. Considrese la siguiente declaracin de
un array de caracteres que contiene las letras del
alfabeto;
Char alfabeto[27]=ABCDE.z;
[ ]
;
P=&alfabeto[0]
Printf(%c\n
Printf(
%c\n ,*p);
p);
Aritmtica de punteros
Float m[20];
Float *r;
r=m;
r++
Punteros constantes
Punteros a constantes
El formato p
para definir un puntero
p
a una constante es;;
Const<tipo de dato elemento>*<nombre
puntero>=<direccin de constante>;
Const int x=25;
Const int y=50;
Const int *p1=&x;
P1=&y, p1 apunta a otra constante
*p1=15,
* 1 15 crea un error de
d compilacin
il i
int i, j;
i=5;
j 7
j=7;
func1 (&i, j);
Punteros a funciones
Es p
posible crear p
punteros q
que apunten
p
a funciones. En lugar
g
de direccionar datos, los punteros de funciones apuntan a
cdigo ejecutable. Al igual que los datos, las funciones se
almacenan en memoria y tienen direcciones iniciales.
iniciales En C se
pueden asignar las direcciones iniciales de funciones a
punteros. Tales funciones se p
p
pueden llamar en un modo
indirecto, es decir mediante un puntero cuyo valor es igual a
la direccin inicial de la funcin en cuestin
Ti
Tipo_de_retorno
d
(*
(*punteroFuncion)
F i ) (<lista
( li de
d parametros>);
)
Cont
Cont
Un p
puntero a una funcin es simplemente
p
un p
puntero cuyo
y
valor es la direccin del nombre de la funcin. Dado que el
nombre es, en si mismo, un puntero; un puntero a una funcin
es un puntero a un puntero constante
Ejemplo 10.6
10 6
Ciertas aplicaciones
p
requieren
q
disponer
p
de numerosas
funciones, basadas en el cumplimiento de ciertas
condiciones. Un mtodo para implementar tal aplicacin es
utilizar una sentencia switch con muchos selectores case.
case
Otra solucin es utilizar un array de punteros de funcin. Se
puede seleccionar una funcin de la lista y llamarla
p
La sintaxis general de un array de punteros de funcin es:
Punteros a estructuras
Un p
puntero tambin p
puede apuntar
p
a una estructura. Se
puede declarar un puntero a una estructura tal como se
declara un puntero a cualquier otro objeto y se declara
un puntero estructura tal como se declara cualquier otra
variable estructura: especificando un puntero en lugar
del nombre de la variable estructura
Strcuct persona *p; /*se crea un puntero de estructura*/
p=&empleado;
Ejemplo 10.9
10 9
Ejercicios
Prueba de la
relacin de
aspecto
(Debe parecer circular)
4x3
16x9