Tutorial de Apuntadores y Arreglos en C - Cimat
Tutorial de Apuntadores y Arreglos en C - Cimat
Tutorial de Apuntadores y Arreglos en C - Cimat
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