Está en la página 1de 14

PUNTEROS

EN EL LENGUAJE C

1
VARIABLES DE PUNTERO
Variable común ( x )
El valor de la variable está VARIABLE DE PUNTERO (px)
almacenada en la dirección Aquí se almacena la DIRECCIÓN DE
de memoria.0 1 2 3 4
MEMORIA DE X.5 6 7
Se dice que px APUNTA a X.
8 9 10 11 12 13 14 15

16 17
55 18 19 20 21 22 23

24 25 26 27 28 29 30 31
Una variable de puntero
también puede tener a su
32 33 34 35 36 37 38 39
vez otra variable de puntero.
40 41 42 43 44
18 45 46 47

48 49
45 50 51 52 53 54 55

56 57 58 59 60 61 62 63
2
UNA VARIABLE DE
PUNTERO
ALMACENA LA
DIRECCIÓN DE LA
MEMORIA DE OTRA
VARIABLE.
3
DECLARACIÓN DE VARIABLES DE
TIPO PUNTERO EN C

tipo * nombre;
Ejemplos:
int * pi; //puntero a entero
int * pa, *pb; //dos punteros a entero
char ca, *cca // una variable char y un puntero
a // tipo char
double * db; // puntero a double
char * pchr; // puntero a char
long * pln[20]; //VECTOR de punteros tipo //long

4
OPERACIONES CON
PUNTEROS

5
Asignaciones
Variable de puntero = Dirección de memoria

0 1 2 3 4 5 6 7
x = 15.22
8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23

15.22
24 25 26 27 28 29 px =30&x 31

32 33 34 35 36 37 38 39

40 41 42 43 44 45 46 47

26
48 49 50 51 52 53 54 55

56 57 58 59 60 61 62 63

6
Asignaciones (cont.)
Variable de puntero1 = Variable de puntero2

0 1 2 3 4 5 py
6 = px
7
x = 15.22
8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23

15.22 26 29
24 25 26 27 28 30 31

32 33
DOS 34 35
VARIABLES 36 37
DISTINTAS 38 39

VAN A APUNTAR A LA MISMA


40 41 42 43 44 45 46 47
DIRECCIÓN DE MEMORIA
26
48 49 50 51 52 53 54 55
px = &x
56 57 58 59 60 61 62 63

7
DERREFERENCIACION
(INDIRECCION)

Es la operación que permite obtener el valor


almacenado en la dirección de memoria a la
que apunta el puntero.
Sintaxis: * variable de puntero
Ejemplo:
x = 50; //una variable almacena el valor 50.
px = &x; //la variable de puntero almacena la
//dirección de x.
*px = 250; //La variable x pasa a valer 250.
y = *px; //Asigno a y el valor de x o sea 250.
8
OPERACIONES ARITMÉTICAS
CON PUNTEROS

A las variables de puntero se les puede sumar y


restar números enteros.
Al sumarle o restarle un entero n a una variable de
puntero se apuntará a una dirección de memoria
ubicada a (± n) multiplicado por el número de bytes
del tipo de variable a la que se apunta.
Ejemplo:
Al sumarle 5 a una variable de puntero que apunta a int, se
apuntará a una nueva dirección de memoria ubicada 20
bytes en sentido creciente de la memoria.

9
0 x1= 152 2 3 4 5 6 7

8 9 10 11 12 13 14 15

152 35 1785 92 88
16 17 18 19 20 21 22 23

24 25 26 27 28 29 30 31
px+3 apunta a &x+3 * sizeof( tipo )
*( px + 3 ) vale 92
32 px33
== &x 34 35 36 37 38 39
&x == 17
40 *px
41== 15242 43 44 45 46 47

17
48 49 50 51 52 53 54 55

56 57 58 59 60 61 62 63
10
PUNTEROS Y VECTORES
a es un vector de 9 términos
0 1 2 3 4 5 6 7
a[0] *(a + 5)

8 9 10 11 12 13 14 15
*a
1520 362 55 96 725 133 0
16 17 18 19 20 21 22 23

-95 128
24 25 26 Se
27 puede28decir que:
29 30 31
1. a Es una variable de puntero
a[8] 32 33 34 35 que36apunta 37
a la dirección
38 de 39
memoria
40 41 42 43
de44a[0]. 45 46 47
a 2. a == & a[ 0 ];
48 49 50 513. *a 52
== a[ 0 ];53 54 55
4. *( a + 5) == a[ 5 ]
56 57 58 59 60 61 62 63
11
PUNTEROS Y MATRICES

0 1 2 3 4 5 6 7
a[ 0 ][ 0 ] a[ 0 a[ 1 a[ 2
] ] ]
8 9 10 11 12 13 14 15

1520 362 55 96 725 133 0


16 17 18 19 20 21 22 23

-95 128
24 25 26 27 28 29 30 31

a[ 2 ][ 2 ]32 33 34 35 36 37 38 39
a
40 41 42 43 44 45 46 47

48 49 50 51 52 53 54 55

56 57 58 59 60 61 62 63
12
PUNTEROS Y MATRICES
Conclusiones

Una matriz m x n es un vector de m vectores de dimensión n.


a[ m ][ n ] == { a[ 0 ], a[ 1 ], . . ., a[ m ] }
donde cada a[ i ] vale:
a[ i ] == { a[ i ][ 0 ], a[ i ][ 1 ], . . . , a[ i ][ n ] }
Para todas las matrices se cumple lo siguiente:
a == &a[ 0 ][ 0 ] //dirección de memoria a[0][0];
a[ 0 ] = &a[ 0 ][ 0 ];
a[ i ] == &a[ i ][ 0 ];
*a[ i ] == a[ i ] [ 0 ];
*a[ i ] + j == a[ i ][ j ];
a[ i ][ j ] == *( *a+ i * m + j ) ;

13
FIN DE PUNTEROS

14

También podría gustarte