06.05.2013 Views

CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

MIGUEL Á. TOLEDO MARTÍNEZ<br />

Esta vez, el compilador ha insertado un carácter terminador nulo como un carácter<br />

predeterminado para llenar el arreglo. De otra manera, si proporciona demasiados caracteres,<br />

el compilador generará un mensaje de error demasiados inicializadores. De nuevo, la forma<br />

segura para manejar este problema es dejar que el compilador determine el tamaño del arreglo<br />

para ajustar el número de valores inicializados.<br />

Por último, vamos a considerar cómo se inicializa el arreglo de caracteres con valores de<br />

cadenas. Recuerde, una cadena no es más que un arreglo de caracteres, terminada con un<br />

terminador nulo. Así es como se puede inicializar un arreglo de caracteres con un valor de<br />

cadena:<br />

char caracteres[6] = "HELLO";<br />

Observe que la sintaxis es diferente. La cadena de iniciación deberá encerrarse entre<br />

comillas más que entre llaves. Otra cosa que se ve es que el tamaño del arreglo es uno más<br />

grande que el número de caracteres en la cadena. La razón para esto parece obvia cuando<br />

inspecciona el arreglo usando un depurador. Aquí esta lo que verá:<br />

RESULTADOS <strong>DE</strong>L <strong>DE</strong>PURADOR<br />

Inspección de caracteres<br />

[0] ‘H’<br />

[1] ‘E’<br />

[2] ‘L’<br />

[3] ‘L’<br />

[4] ‘O’<br />

[5] ‘\0’<br />

Recuerde que una cadena terminará con un terminador nulo. Al hacer el tamaño del<br />

arreglo uno más grande que el número de caracteres en la cadena, permite espacio para que el<br />

compilador inserte el terminador nulo. Si no se deja espacio para el terminador nulo, éste<br />

quedará truncado (eliminado) del arreglo y no se obtendrá un mensaje de error. De nuevo, la<br />

mejor manera de evitar este problema es permitir que el compilador determine el tamaño del<br />

arreglo, como éste:<br />

char caracteres[] = "HELLO";<br />

Con esta definición, el compilador creará suficientes posiciones en el arreglo para<br />

contener todos los caracteres de cadenas con el terminador nulo insertado como el último<br />

carácter en el arreglo.<br />

INICIACIÓN PRE<strong>DE</strong>TERMINADA <strong>DE</strong> ARREGLOS GLOBALES Y ESTÁTICOS<br />

Se pueden definir e inicializar arreglos en cualquier parte del programa C++. El ámbito<br />

de un arreglo funciona justo como el ámbito de una variable o constante. Un arreglo definido<br />

antes de main() es visible en todo el archivo fuente en el cual se define. Un arreglo definido<br />

dentro de un bloque tiene ámbito de bloque y, por lo tanto, es visible sólo dentro del bloque en<br />

el cual se define.<br />

Si se define un arreglo en forma global o como un arreglo estático y no se proporciona<br />

ningún valor de inicialización, el compilador inicializará el arreglo con el valor predeterminado<br />

ARREGLOS, APUNTADORES Y ESTRUCTURAS – <strong>LECCIÓN</strong> <strong>18</strong> <strong>18</strong>-63

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

Saved successfully!

Ooh no, something went wrong!