Informática I
Código 2547100
Semestre 2013-1
Para Ingeniería Electrónica
e Ingeniería de Telecomunicaciones
Profesor: Sebastián Isaza
The & operator
• El operador & entrega la dirección de memoria donde está
almacenada una variable
• Lo hemos usado antes en: scanf(“%f”, &grade)
memory
0x00
int a = 70;
…
70
0xF7
…
…
printf(“%d %p”, a, &a);
70 0xF7
Informática I (2013-1) – Prof. Sebastián Isaza
2
Pointers
• Un apuntador es una variable u objeto de datos cuyo valor es
una dirección de memoria.
• Si usted le da a una variable apuntador el nombre de ptr,
usted puede tener instrucciones como la siguiente:
ptr = #
• Decimos que ptr “apunta” a num.
Informática I (2013-1) – Prof. Sebastián Isaza
3
The indirection operator *
• Suponga que usted sabe que ptr apunta a max, como se muestra
aquí:
ptr = &max;
• Usted puede usar el operador de indirección * para encontrar el
valor almacenado en max:
val = *ptr;
• Podemos decir entonces que las siguientes instrucciones son
equivalentes:
ptr = &max;
val = *ptr;
val = max;
• &variable es la dirección de la variable
• *direccion ó *variable_apuntador es el valor almacenado en esa
dirección
Informática I (2013-1) – Prof. Sebastián Isaza
4
Declaring pointers
• A continuación se dan ejemplos de la declaración de un
apuntador:
int * pi;
char * pc;
float * pf, * pg;
la variable pf apunta a
un dato de tipo float
la variable pf es
de tipo apuntador
Informática I (2013-1) – Prof. Sebastián Isaza
5
Pointers at work
int x = 45;
char y = ‘A’;
int *ptr1;
ptr1 = &x;
char *ptr2;
ptr2 = &y;
*ptr1 = 13;
*ptr2 = ‘D’;
0xCFF68540
0xCFF68544
45
13
x
y
‘A’
‘D’
0xCFF6854C
?
0xCFF68540
ptr1
0xCFF68550
…
0xCFF68544
?
ptr2
Informática I (2013-1) – Prof. Sebastián Isaza
…
6
Descargar

Informática I