Está en la página 1de 8

Familiarización con el

entorno
● Punteros en C
● Entorno del laboratorio
– La línea de órdenes
– El compilador gcc
– La herramienta de construcción make
– El depurador gdb
– El simulador DeSmuME

© 2009 Grupo ARCO Estructura de Computadores 1


Punteros y direcciones

● Puntero = Objeto que contiene la


dirección de otro objeto
Salvo void*
– Tiene asociado el tipo al que apunta

int
int xx == 1,
1, yy == 2,
2, z[10];
z[10];
int *ip;
int *ip;
ip
ip == &x;
&x;
yy == *ip;
& obtiene la dirección de un objeto
*ip;
*ip * obtiene el objeto apuntado por un puntero
*ip = 0;
= 0;
ip
ip == &z[0];
&z[0];

© 2009 Grupo ARCO Estructura de Computadores 2


Aritmética de punteros

● Al operar se refiere al número de objetos


– El incremento apunta al siguiente objeto

© 2009 Grupo ARCO Estructura de Computadores 3


Arrays (vectores)

● Un array es una secuencia homogénea


– Índices de 0 a N-1

int
int a[10];
a[10];

© 2009 Grupo ARCO Estructura de Computadores 4


Arrays y punteros

● Punteros y arrays están relacionados


int
int a[10];
a[10];
int*
int* pa;
pa; Equivalente a pa = a
pa = &a[0];
pa = &a[0];

© 2009 Grupo ARCO Estructura de Computadores 5


Indexado de arrays y
aritmáetica de punteros
● Punteros y arrays están relacionados
pa
pa ++ 11 ==
== &a[1]
&a[1]
pa + 2 == &a[2]
pa + 2 == &a[2]
pa[i]
pa[i] ==== *(pa
*(pa ++ i)
i) ==
== a[i]
a[i]

© 2009 Grupo ARCO Estructura de Computadores 6


Paso por valor y por
referencia
void
void cambiaValorValor(float
cambiaValorValor(float vpi) vpi) {{
vpi
vpi == 0;
0;
printf
printf ("Direccion
("Direccion dede vpi:
vpi: %p\n",
%p\n", &vpi);
&vpi);
printf ("Valor de vpi: %f\n",
printf ("Valor de vpi: %f\n", vpi);vpi);
}}
void
void cambiaValorReferencia(float
cambiaValorReferencia(float *vpi) *vpi) {{
*vpi
*vpi == 0;
0;
printf
printf ("Direccion de
("Direccion de vpi:
vpi: %p\n",
%p\n", vpi);
vpi);
printf ("Valor de vpi: %f\n", *vpi);
printf ("Valor de vpi: %f\n", *vpi);
}}
int
int main()
main() {{
float
float pipi == 3.14;
3.14;
cambiaValorValor(pi);
cambiaValorValor(pi);
printf
printf ("Direccion
("Direccion dede pi:
pi: %p\n",
%p\n", &pi);
&pi);
printf ("Valor de pi: %f\n",
printf ("Valor de pi: %f\n", pi); pi);
cambiaValorReferencia(&pi);
cambiaValorReferencia(&pi);
printf
printf ("Direccion
("Direccion dede pi:
pi: %p\n",
%p\n", &pi);
&pi);
printf ("Valor de pi: %f\n",
printf ("Valor de pi: %f\n", pi); pi);
}}

© 2009 Grupo ARCO Estructura de Computadores 7


La línea de órdenes

© 2009 Grupo ARCO Estructura de Computadores 8

También podría gustarte