Arturo Vega Gonz´
alez
a.vega@ugto.mx Division de Ciencias e Ingenier´ıas
Universidad de Guanajuato Campus Le´on
1
Apuntadores
Acceso indirecto al contenido de las variables.
Un apuntador es una variable que almacena la direcci´
on de
memoria donde el dato de interes esta almacenado.
Cuando deseamos que un apuntador no contenga una direcci´
on
asociada a un dato, se dice que el apuntador no apunta a ning´
un
lado y se expresa como NULL.
Cuando se declara un apuntador, una cierta cantidad de
memoria se reserva para contenerlo.
Nunca se debe asumir que un apuntador tiene un tama˜
no
definido.
Para declarar una apuntador se utiliza el “*”
i n t o p c i o n ; // s e d e f i n e una v a r i a b l e t i p o e n t e r o l l a m a d a o p c i ´o n i n t ∗ p t r o p c i o n ; // s e d e f i n e una a p u n t a d o r a una v a r i a b l e t i p o e n t e r o i n t ∗ i p t r ; // s e d e c l a r a un a p u n t a d o r t i p o e n t e r o
Operadores:
Operador Descripci´on
* dereference : indica que se accesa el con-tenido de la variable o memoria a la cual apunta el apuntador
& Direcci´on: Indica la direcci´on f´ısica de memoria donde la variable es almacenada (dada una variable, & apunta hacia la variable)
Considere:
i n t a , ∗ i p t r , ∗ j p t r . ∗ k p t ra
iptr
jptr
kptr
i p t r = &a ; // i p t r a p u n t a a l c o n t e n i d o de a
a
iptr
jptr
kptr
j p t r = i p t r // j p t r a p u n t a a l o que a p u n t a i p t ra
iptr
jptr
kptr
∗ j p t r = 1 0 0 ; // s e a c c e s a e l e s p a c i o // de memoria a l que a p u n t a 100
a
iptr
jptr
kptr
k p t r = NULL ; // a p u n t a d o r v a c i o // no a p u n t a a a l g u n a v a r i a b l e o c o n t e n i d o 100a
iptr
jptr
kptr
Reservando espacio para un apuntador
#i n c l u d e < s t d l i b . h> i n t g ( i n t ∗∗ i p t r ) { i f ( ( ∗ i p t r = ( i n t ∗ ) m a l l o c ( s i z e o f ( i n t ) ) ) = = NULL ) r e t u r n −1; r e t u r n 0 ; }malloc : reserva espacio de memoria
Referencias: arreglos y apuntadores
Arreglos
i n t f ( ) { i n t a [ 1 0 ] , ∗ i p t r ; i p t r = a ; i p t r [ 0 ] = 5 ; r e t u r n 0 ; } . . .Apuntadores
i n t g ( ) { i n t a [ 1 0 ] , ∗ i p t r ; i p t r = a ; ∗ i p t r = 5 ; r e t u r n 0 ; } . . .Referencias: arreglos y apuntadores
Argumentos por valor y por referencia
En “C”, los argumentos de las funciones siempre pasan s´
olo “su
valor”. Es decir, se hace una copia del valor de cada argumento,
y son estas copias las que se procesan en la funci´
on. Como
consecuencia, la variables que pasan como argumentos a las
funciones NO CAMBIAN.
El uso de apuntadores permite el paso de argumentos por
referencia, de esta forma los argumentos puede CAMBIAR su
contenido. Aqu´ı entonces deben pasarse direcciones de variables
Intercambio Incorrecto
v o i d c a m b i o 1 ( i n t x , i n t y ) { i n t tmp ; tmp = x ; x = y ; y = tmp ; r e t u r n ; } . . .Intercambio correcto
v o i d c a m b i o 2 ( i n t ∗ x , i n t ∗ y ) { i n t tmp ; tmp = ∗ x ; ∗ x = ∗ y ; ∗ y = tmp ; r e t u r n ; } . . .Uso en funciones
Arreglos
i n t f 1 ( i n t a [ ] ) { a [ 0 ] = 5 ; r e t u r n 0 ; }Apuntadores
i n t f 2 ( i n t ∗ a ) { ∗ a = 5 ; r e t u r n 0 ; }Un archivo es un conjunto de informaci´
on o datos que se
encuentran almacenados en una memoria permanente, como un
disco duro.
Un archivo se define por su nombre y su extensi´
on
La extension del archivo nos indica parcialmente el tipo y
contenido del archivo
Los lenguajes de programaci´
on contienen funciones b´
asicas para
accesar y manipular archivos
Declarando y abriendo un archivo
La funci´
on fopen se utiliza para abir un archivo, y asociarle una
variable apuntador a archivo con la cual el programa puede
referirse a la fuente del archivo. El prototipo de fopen es:
FILE ∗ f o p e n ( c o n s t c h a r ∗ n o m b r e D E L a r c h i v o , c o n s t c h a r ∗modo ) ;