Matrices En C++

Páginas: 10 (2418 palabras) Publicado: 6 de noviembre de 2012
Declaración de matrices
Sintaxis
La declaración de matrices sigue la siguiente sintaxis:
tipoX etiqueta [<expr-const>]
* tipoX es el tipo de los elementos que serán almacenados en la matriz. Puede ser cualquier type-id (2.2) válido a excepción de void y de funciones (no pueden existir matrices de funciones, pero sí de punteros-a-función).
* Etiqueta es el identificador
*<expr-const>: una expresión cuyo resultado debe ser una constante entera positiva n distinta de cero, que es el número de elementos de la matriz. Los elementos están numerados desde 0 hasta n-1.

Nota: no confundir el valor n con el hecho de que los elementos estén numerados de 0 a n-1. Por ejemplo, el elemento a[9] es el último de la matriz definida como: int a[10];. Esta "extraña" ocurrenciaes herencia del C clásico y una costumbre muy extendida en la informática (empezar a contar por el cero); aunque se habitúa uno a ella rápidamente, la verdad es que resulta un poco extraña al principio [3].

Ejemplos:
int a[10]; // declara una matriz de 10 elementos enteros
char ch[10] // ídem de 10 elementos char
char* p[10] // ídem de 10 elementos puntero-a-carácterstruct St mst[10] // ídem de 10 elementos estructuras tipo St

Observe en esta última sentencia, que los elementos no tienen por qué ser necesariamente tipos simples (pre construido en el lenguaje). También pueden ser tipos abstractos (2.2a). Incluso su declaración puede realizarse en la misma sentencia que declara la matriz. Por ejemplo:
struc St {
int orden;
char* plato;
char*descripc;
}
mst[10];
Esta sentencia declara una matriz mst de 10 estructuras tipo St. ambas se declaran en la misma sentencia.
La exigencia de que el resultado de <expr-const> sea un valor constante, es de la mayor trascendencia para entender las limitaciones de las matrices C++. Significa que el tamaño de la matriz debe ser conocida en tiempo de compilación. Por ejemplo, no es posiblealgo como:
* unsigned int size;
...
char matriz[size]; // Error!!

En su lugar debe hacerse:
* const unsigned int size = 10;
...
char matriz[size]; // Ok.

Pero entonces es preferible establecer directamente:
char matriz[10]; // Ok.
O mejor aún:
#define ASIZE 10
...
char matriz[ASIZE]; // Ok.

En general, cuando se necesitan matrices que cambien de tamaño en"runtime", suele recurrirse a crearlas en el montón mediante el operador new [ ] (4.9.20c) que sí permite definir su tamaño en función de una variable, por ejemplo.
unsigned int size;
...
char* mptr = new char[size]; // Ok.

En este caso las matrices no son referenciadas directamente, sino a través de un puntero, y una vez creadas tampoco es posible cambiar su tamaño. El recurso utilizadocuando se necesita cambiar este, es crear otra matriz del tamaño adecuado; copiar en su caso los miembros de la antigua a la nueva; borrar la antigua (liberar el espacio asignado), y finalmente, asignar el puntero a la nueva matriz. De esta forma la ilusión del usuario es que realmente se ha cambiado el tamaño de la matriz, aunque la realidad subyacente sea muy diferente. Otro recurso, utilizadocuando la matriz "puede" crecer pero no se está muy seguro, es crearla con un tamaño inicial algo mayor que lo necesario (por ejemplo un 25%). En estos casos se dispone de cierto espacio de reserva antes que sea necesario proceder a un proceso de copia total.
No obstante lo anterior, en C-99 sí es lícita la declaración de matrices de longitud variable ("variable length arrays") que es como seconoce a las que pueden definir su tamaño en runtime. Es decir, en este entorno están permitidas declaraciones del tipo

unsigned int size;
char matriz[size]; // Ok

Con objeto de garantizar la compatibilidad con el código C existente, algunos compiladores permiten la definición de estas matrices cuando son de naturaleza automática (definidas en el interior de una función). Es el caso del...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Matrices En C++
  • Matrices c++
  • Matrices programacion c++
  • Tablas con matrices en c
  • Codigo Matrices En C
  • guia sobre matrices c++
  • Suma De Matrices En C++
  • Vectores Y Matrices En C++

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS