El C admite vectores de más d una dimensión. La sintaxis de la declaración de un vector multidimensional es la siguiente:
crea un vector entero de 4x10x3. Los vectores de más de dos dimensiones no son muy comunes (en el MSDOS) a causa de la cantidad de memoria necesaria para contenerlos.
Constituyen la forma más simple de los vectores multidimensionales. siguiendo la forma general, su declaración es:
Un vector de strings es un vector bidimensional de tipo carácter (char) donde la dimensión del índice izquierdo determina el número del string mientras el índice derecho especifica la longitud máxima que pueden tener los strings.
Los punteros pueden ser almacenados en vectores como cualquier otro tipo de dato. La sintaxis para su declaración es la siguiente:
En C una estructura es un conjunto de variables identificadas con un nombre. Las variables que constituyen la estructura se llaman elementos o miembros de la estructura. Una estructura en C equivale a un record en Pascal. La palabra llave struct señala al compilador la definición de la estructura
Como se puede observar la declaración termina con un punto y coma. Esto es porque la declaración de una estructura es una instrucción y como ya se ha dicho repetidas veces una instrucción tiene que acabar siempre en un punto y coma.
Debe hacerse notar que una declaración de una estructura no declara ninguna variable. Se limita sólo a definir la forma que deberá tener una variable que corresponda al tipo de la misma. Para declarar una variable de tipo estructura es necesario recurrir a la sintaxis de declaración de variables. Así para declarar por ejemplo una variable alumno de tipo ALUMNO se escribiría:
Esta instrucción declara una variable estructura cuyo nombre es alumno y cuyo tipo es ALUMNO.
Las variables de tipo estructura se pueden declarar al mismo tiempo que la declaración de la estructura
La instrucción define un tipo de estructura ALUMNO y declara las variables alumno_informatica,alumno_mecanica,alumno_electronica de tipo struct ALUNO.
El identificador de la estructura, tal como se indica en el ejemplo que sigue, puede ser omitido.
El operador especial punto permite seleccionar los miembros de una estructura. Para asignar por ejemplo el valor 125 al miembro numero de la variable alumno se procedería
Para declarar un vector de estructuras es necesario primero definir una estructura y después declara una variable vector de aquel tipo. Con el ejemplo siguiente se puede declarar un vector de estructura de 100 elementos de tipo ALUMNO (definido anteriormente):
Si dos variables de tipo estructura son del mismo tipo es posible asignar una a la otra. En este caso todos los elementos de la estructura a la izquierda del operador de asignación reciben los valores correspondientes de los elementos a la derecha.
El C admite punteros a estructuras del mismo modo que a otros tipos de variables. No obstante existen aspectos particulares inherentes a estos punteros que requieren una profundización en el tema.
Los punteros a estructuras se declaran anteponiendo delante del nombre de la variable el signo *. Por ejemplo:
Los punteros a estructuras tienen múltiples aplicaciones. Con ellos por ejemplo permiten efectuar una llamada por referencia a una función. También es posible con ellos la creación de las llamadas listas dinámicas (linked lists).
Se hubiera podido referirse al miembro número de la estructura con el empleo explícito del operador.*
pero dado que al acceso a los miembros de una estructura por medio de punteros es muy común el C preve un operador especial. Se trata de -> que esta constituido por el signo menos seguido del signo mayor. Este operador se utiliza en lugar del punto cuando se accede a una estructura por medio de un puntero.
Los elementos de una estructura pueden ser de cualquier de datos válidos en el C, inclusive vectores y estructuras. Una estructura anidada es una estructura dentro de otra.