CONTENIDO DE LA LECCIÓN 18
CONTENIDO DE LA LECCIÓN 18
CONTENIDO DE LA LECCIÓN 18
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