17.05.2013 Views

Tutorial de Apuntadores y Arreglos en C - Cimat

Tutorial de Apuntadores y Arreglos en C - Cimat

Tutorial de Apuntadores y Arreglos en C - Cimat

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

esto copiará el 7 a la dirección a la que apunta ptr. Así que como ptr “apunta a” (conti<strong>en</strong>e la dirección <strong>de</strong>) k, la<br />

instrucción <strong>de</strong> arriba asignará a k el valor <strong>de</strong> 7. Esto es, que cuando usemos el '*' hacemos refer<strong>en</strong>cia al valor<br />

al que ptr está apuntando, no el valor <strong>de</strong> el apuntador <strong>en</strong> si.<br />

De modo similar podríamos escribir:<br />

printf ("%d\n",*ptr);<br />

para imprimir <strong>en</strong> la pantalla el valor <strong>en</strong>tero que se <strong>en</strong>cu<strong>en</strong>tra alojado <strong>en</strong> la dirección a la que apunta “ptr”.<br />

Una manera <strong>de</strong> observar como todo esto <strong>en</strong>caja <strong>en</strong>tre sí sería ejecutar el sigui<strong>en</strong>te programa, revisar el código y<br />

la salida conci<strong>en</strong>zudam<strong>en</strong>te.<br />

PROGRAMA 1.1<br />

/* Program 1.1 from PTRTUT10.TXT 6/10/97 */<br />

#inclu<strong>de</strong> <br />

int j, k;<br />

int *ptr;<br />

int main (void)<br />

{<br />

j = 1;<br />

k = 2;<br />

ptr = &k;<br />

printf("\n");<br />

printf("j ti<strong>en</strong>e el valor: %d y esta alojado <strong>en</strong>: %p\n", j, (void *)&j);<br />

printf("k ti<strong>en</strong>e el valor: %d y esta alojado <strong>en</strong>: %p\n", k, (void *)&k);<br />

printf("ptr ti<strong>en</strong>e el valor: %p y esta alojado <strong>en</strong>: %p\n", ptr, (void *)&ptr);<br />

printf("El valor <strong>de</strong>l <strong>en</strong>tero al que apunta ptr es: %d\n", *ptr);<br />

}<br />

return 0;<br />

Nota: Aún t<strong>en</strong>emos que discutir los aspectos <strong>de</strong> C que requier<strong>en</strong> el uso <strong>de</strong> la expresión (void *) usada aquí.<br />

Por el mom<strong>en</strong>to inclúyela <strong>en</strong> el código <strong>de</strong> prueba. Ya explicaremos las razones <strong>de</strong> esta expresión más a<strong>de</strong>lante.<br />

Recordando:<br />

• Una variable es <strong>de</strong>clarada dándole un tipo y un nombre (por ejemplo: int k;)<br />

• Una variable apuntador es <strong>de</strong>clarada dándole un tipo y un nombre (por ejemplo: int *ptr) <strong>en</strong> don<strong>de</strong> el<br />

asterisco le dice al compilador que la variable <strong>de</strong> nombre ptr es una variable apuntador. Y el tipo le dice<br />

al compilador a que tipo <strong>de</strong> variable va a apuntar nuestro apuntador (int <strong>en</strong> este caso).<br />

7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!