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.

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

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

Saved successfully!

Ooh no, something went wrong!