Una simple declaración de matriz corta que incluye su definición se puede declarar en cualquier alcance en C ++ de la siguiente manera:
char ch [] = 'a', 'b', 'c', 'd', 'e';Esta es una variedad de caracteres cuyo nombre es CH. El literal de matriz es un ejemplo de un inicializador_list.
Esta misma matriz se puede declarar e inicializar de la siguiente manera, en un alcance de función o un alcance local anidado pero no en el alcance global:
char ch [5];Si este segmento de código se escribe en el alcance global, el compilador emitirá cinco mensajes de error para las cinco líneas de asignación. Sin embargo, la matriz se puede declarar sin inicialización en el alcance global y luego se asignaron valores en el alcance de la función (u otros ámbitos), como muestra el siguiente programa:
#incluirEl alcance global tiene la declaración "Char Ch [5];";. La asignación de los valores se ha realizado en la función C ++ Main (). La función principal de C ++ sigue siendo una función.
Estas son las reglas sobre cómo usar una matriz en el alcance global, el alcance de la función y el alcance local anidado (o cualquier otro alcance):
1. Se puede declarar una matriz con la inicialización de valores prácticos en una declaración en cualquier alcance (global, función, alcance local anidado).
2. Se puede declarar una matriz sin inicialización de valores prácticos en el alcance global y luego tener valores prácticos asignados en el alcance de la función o alcance local anidado.
3. Se puede declarar una matriz sin inicialización de valores prácticos en el alcance de la función o alcance local anidado y ha asignado valores prácticos en ese mismo alcance local.
Estas reglas también se aplican a los tipos escalares (fundamentales). El resto de este artículo comienza ilustrando la declaración y la asignación de valores prácticos de los tipos fundamentales en los ámbitos globales y los otros (función y local). Esto es seguido por la ilustración de la declaración y asignación de valores prácticos del tipo de matriz en los ámbitos globales y los otros (función y local). El entero (int) se usa como ejemplo para los tipos fundamentales. Las tres reglas anteriores se demuestran para el entero y la matriz.
Declaración de tipo entero con ámbitos globales y otros
En esta sección, las reglas se demuestran con el tipo de entero.
Primera regla:
Se puede declarar un entero con la inicialización de un valor práctico en una declaración en cualquier alcance (global, función, alcance local anidado). El siguiente programa ilustra esto con tres variables enteras diferentes:
#incluirLa salida es:
1El alcance local anidado (bloque) es el que comienza con la condición if.
Segunda regla:
Se puede declarar un entero sin inicialización de un valor práctico en el alcance global y luego ha asignado un valor práctico en el alcance de la función o alcance local anidado. El siguiente programa ilustra esto con una variable entera:
#incluirLa salida es:
0Cuando se declara un entero sin asignación, el entero toma el valor predeterminado de cero. En este caso, el cero no es un valor práctico.
Tercera regla:
Se puede declarar un entero sin inicialización de un valor práctico en el alcance de la función o el alcance local anidado y ha asignado valores prácticos en ese mismo alcance local. El siguiente programa ilustra esto con dos variables enteras diferentes:
#incluirLa salida es:
2El siguiente programa no se compilará, y el compilador emitirá un mensaje de error:
#incluirEl problema es el segmento de código de alcance global:
int inter;La segunda declaración no está permitida en este contexto.
Declaración del tipo de matriz con ámbitos globales y otros
Primera regla:
Se puede declarar una matriz con la inicialización de valores prácticos en una declaración en cualquier alcance (global, función, alcance local anidado). El siguiente programa ilustra esto con tres matrices diferentes:
#incluirLa salida debe ser:
A B C D EEl alcance local anidado (bloque) es el que comienza con la condición if.
Segunda regla:
Se puede declarar una matriz sin inicialización de valores prácticos en el alcance global y luego tener valores prácticos asignados en el alcance de la función o alcance local anidado (o cualquier otro alcance). El siguiente programa ilustra esto con una matriz:
#incluirLa salida debe ser:
"" "" "Cuando un personaje se declara sin asignación, el personaje toma el valor predeterminado de "(sin carácter). En este caso, el "no es un valor práctico. Hay cinco "para el caso global.
Nota: La asignación solo se puede hacer de esta manera sin el inicializador_list.
Nota: Con las matrices, cuando la matriz se declara sin inicialización de valores prácticos en una función o alcance anidado, los valores predeterminados pueden ser arbitrarios. Los valores predeterminados son solo ", para el caso global. Esta característica arbitraria también se aplica a la matriz de enteros.
Tercera regla:
Se puede declarar una matriz sin inicialización de valores prácticos en el alcance de la función o alcance local anidado y ha asignado valores prácticos en ese mismo alcance local. El siguiente programa ilustra esto con dos matrices diferentes:
#incluirLa salida debe ser:
FghijEl siguiente programa no se compilará, y el compilador emitirá algunos mensajes de error:
#incluirEl problema es el segmento de código de alcance global:
char ch1 [5];Las declaraciones de asignación no están permitidas en este contexto.
Conclusión
Estas son las reglas sobre cómo usar una matriz en el alcance global, el alcance de la función y el alcance local anidado (o cualquier otro alcance):
1) Se puede declarar una matriz con la inicialización de valores prácticos en una declaración, en cualquier alcance (global, función, alcance local anidado).
2) Se puede declarar una matriz sin inicialización de valores prácticos, en el alcance global, y luego tener valores prácticos asignados, en el alcance de funciones o alcance local anidado (o cualquier otro alcance).
3) Se puede declarar una matriz sin inicialización de valores prácticos, en el alcance de la función o alcance local anidado, y ha asignado valores prácticos, en ese mismo alcance local.