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.
Veamos ahora el sigui<strong>en</strong>te programa:<br />
PROGRAMA 3.1<br />
/* Program 3.1 from PTRTUT10.HTM 6/13/97 */<br />
#inclu<strong>de</strong> <br />
char strA[80] = "Ca<strong>de</strong>na a usar para el programa <strong>de</strong> ejemplo";<br />
char strB[80];<br />
int main(void)<br />
{<br />
}<br />
char *pA; /* un apuntador al tipo caracter */<br />
char *pB; /* otro apuntador al tipo caracter */<br />
puts(strA); /* muestra la ca<strong>de</strong>na strA */<br />
pA = strA; /* apunta pA a la ca<strong>de</strong>na strA */<br />
puts(pA); /* muestra a don<strong>de</strong> apunta pA */<br />
pB = strB; /* apunta pB a la ca<strong>de</strong>na strB */<br />
putchar('\n'); /* <strong>de</strong>jamos una línea <strong>en</strong> blanco */<br />
while(*pA != '\0') /* linea A (ver texto) */<br />
{<br />
*pB++ = *pA++; /* linea B (ver texto) */<br />
}<br />
*pB = '\0'; /* linea C (ver texto) */<br />
puts(strB); /* muestra strB <strong>en</strong> la pantalla */<br />
return 0;<br />
Lo que hicimos arriba fue com<strong>en</strong>zar por <strong>de</strong>finir dos arreglos <strong>de</strong> 80 caracteres cada uno. Ya que estos son<br />
<strong>de</strong>finidos globalm<strong>en</strong>te, son inicializados a \0 primeram<strong>en</strong>te. Luego strA ti<strong>en</strong>e sus primeros 42 caracteres<br />
inicializados a la ca<strong>de</strong>na que está <strong>en</strong>tre comillas.<br />
Ahora, y<strong>en</strong>do al código, <strong>de</strong>claramos dos apuntadores a caracter y mostramos la ca<strong>de</strong>na <strong>en</strong> pantalla. Después<br />
apuntamos con el puntero pA a strA. Esto quiere <strong>de</strong>cir que, por el significado <strong>de</strong> la operación <strong>de</strong> asignación,<br />
copiamos la dirección <strong>de</strong> memoria <strong>de</strong> strA[0] <strong>en</strong> nuestra variable apuntador pA. Usamos <strong>en</strong>tonces puts() para<br />
mostrar lo que estamos apuntando con pA <strong>en</strong> la pantalla. Consi<strong>de</strong>remos aquí que el prototipo <strong>de</strong> la función<br />
puts() es:<br />
int puts(const char *s);<br />
Por el mom<strong>en</strong>to ignoremos eso <strong>de</strong> “const”. El parámetro pasado a puts() es un apuntador, esto es, el valor <strong>de</strong>l<br />
un apuntador (ya que <strong>en</strong> C todos los parámetros son pasados por valor), y ya que el valor <strong>de</strong> un apuntador es la<br />
dirección <strong>de</strong> memoria a la que apunta, o , para <strong>de</strong>cirlo simple: una dirección. Así que cuando escribimos:<br />
puts(strA); como hemos visto, estamos pasando la dirección <strong>de</strong> strA[0].<br />
De modo similar cuando hacemos: puts(pA); estamos pasando la misma dirección, ya que habíamos<br />
establecido que pA = strA;<br />
14