El estudio de las cadenas
anymz931712Informe1 de Abril de 2014
359 Palabras (2 Páginas)247 Visitas
#include <stdio.h>
int mi_arreglo[] = {1,23,17,4,
-
5,100};
int *ptr;
int main(void)
{
int i;
ptr = &mi_arreglo[0]; /* apuntamos nuestro puntero
al primer elemento del arreglo*/
printf("
\
n
\
n");
for (i = 0; i < 6; i++)
{
printf("mi_arreglo[%d] = %d ",
i,
mi_arreglo[i]); /*<
--
A */
printf("ptr + %d = %d
\
El estudio de las cadenas es útil para profundizar en la relación entre apuntadores y arreglos. Facilita,
además la demost
ración de cómo algunas de las funciones estándar de cadenas de C pueden ser
implementadas. Finalmente ilustraremos cómo y cuando los apuntadores pueden y deben ser pasados a una
función.
En C, las cadenas son arreglos de caracteres. Esto no es necesariame
nte cierto para otros lenguajes. En Basic,
Pascal, Fortran y en otros lenguajes, una cadena tiene definido su propio tipo de datos. Pero en C, esto no es
así. En C una cadena es un arreglo de caracteres
terminado con un carácter
binario
de cero (escrito c
omo
\
0
).
Para comenzar nuestra
discusión
escribiremos algo de código, el cual si bien es preferido para propósitos
meramente ilustrativos, probablemente no
lo
escribirás en un programa real. Consideremos por ejemplo:
char m
i_cadena
[40];
mi_cadena
[0] =
'T';
mi_cadena
[1] = 'e';
mi_cadena
[2] = 'd':
mi_cadena
[3] = '
\
0';
Si bien uno nunca construiría cadenas de este modo, el resultado final es
una cadena que
es en realidad un
arreglo de caracteres
terminad
o con un
caracter
nul
. Por definición, en C, u
na cadena es un arreglo de
caracteres terminado con el carácter
nul
. Hay que tener cuidado con que
nul
no es lo mismo que
NULL
.
El “nul”
se
refiere
a un cero definido por la
secuencia
de escape ‘
\
0’. Esto es, que ocupa un byte de memoria. El
“NULL”, por ot
ra parte, es el
nombre de la macro usada para inicializar apuntadores nulos
. NULL es
tá
definido
en un
archivo de cabecera del compilador de C, mientras que nul
puede no estar
definido del todo.
Ya que al estar escribiendo código como el de arriba gastaría
mos mucho tiempo, C permite dos modos
alternativos de llegar al mismo resultado. El primero sería escribir:
char
mi_cadena
[40] = {'T', 'e', 'd', '
\
0',};
Pero se lleva más tecleado del que es conveniente
.
Así que C permite:
char
mi_cadena
[40] = "Ted";
Cu
ando usamos las comillas dobles
, en lu
gar de las simples usadas en los
ejemplos anteriores, el carácter nul
(‘
\
0’) se añade automáticamente al final de la cadena.
En cualquiera de los casos descritos arriba sucede la misma cosa,. El compilador asigna
un bloque
continuo
de
memoria de 40 bytes de longitud para alojar los caracteres y los inicializa de tal manera que los primeros 4
caracteres son Ted
\
0.
n",i, *(ptr + i));
/*<
...