Estructuras Estaticas
- Las denominaremos estáticas para distinguirlas de aquellas estructuras dedatos o formas de almacenamiento interno que se basan en la utilización dinámicade memoria. Vamos a hablar en este capítulo solo de aquellas estructuras dedatos cuyo tamaño no varía a lo largo de toda la ejecución del programa
- En las estructuras Estaticas se puede encontrar:
1.
EL ARRAY
Un array es una colección de datos del mismo
tipo -exceptuando el tipo void – que se
referencian por un nombre común. Este conjunto de variables se almacenan en posiciones
consecutivas de memoria; la dirección más baja corresponde al primer elemento y
la más alta al último.
Diagrama
de un array en memoria:
dato I dato 2 dato
3 dato 4 dato 5
- Declaración de un array
La declaración de un array incluye el tipo base de
los elementos que lo componen, el
nombre que se le asigna y, entre corchetes, el tamaño de su o sus dimensiones. Son los corchetes los que le indican
al compilador que se trata de un
array para el que debe reservar
el correspondiente espacio en memoria. El tamaño de la primera dimensión puede
omitirse en ciertas circunstancias: si se inicializa el array en el momento de la declaración — como veremos más adelante—, en la
declaración como parámetro formal de una función o cuando se hace referencia a
un array declarado en alguna otra parte del programa. Son ejemplos válidos
de declaraciones:
int vector
[1200]; /* declara un array llamado vector de 1200 elementos enteros */
char texto
[40]; /* declara un array de 40 elementos de tipo carácter */
extern int vector [ ];
/* declaración del array vector; sus elementos son de tipo int y la definición actual del vector tiene que estar hecha
en otro fichero fuente */
#define
TAM6
int
a[2][3][4][5][TAM]; /* declaración de un array de cinco dimensiones */
Como
vemos en este último ejemplo, el tamaño de una de las dimensiones puede venir
determinado tanto por un literal como par un identificador creado con una directiva
define, siempre que sea entero.
Nunca se podrá utilizar para este fin una variable.
EJEMPLOS:
/**********************************************
Programa
que introduce números reales en un array y los muestra en orden inverso al de
lectura.
**********************************************************************/
#include
<stdio.h>
#define N 10
void main(void){
double num[N];
int i;
printf(―\n
\nLECTURA DE %d NUMEROS REALES Y PRESENTACION ENORDEN INVERSO\n\n", N);
for(i=0;
i<N ;i++){
printf(―\nNumero
%d: ", i+1);
scanf("%lf",&num[1]);}
for(i=N-1;
i>=0; i--)
printf(―%.2lf/‖,num[i]);
}
2. CADENA DE CARACTERES
La utilización más habitual de los arrays unidimensionales
es, con diferencia, la de almacenar tiras o cadenas de caracteres – denominadas
strings en muchos lenguajes de programación-. Por eso, y por algunas de sus
particularidades, les dedicamos este apartado.
SINTAXIS
char* gets (char*s)
Esta función es una interesante alternativa a scanf para la introducción por la entrada estándar generalmente
el teclado – de cadenas de caracteres, porque permite incluir el
carácter espacio como carácter de nueva línea y, después sustituirlo por \0,
dejando el resultado en el arrays. Si
ocurre algún error de volverá el valor NULL, en caso contrario devuelve un
puntero al
array s.
/**********************************************************************
Presenta
caracteres en la salida estándar.
**********************************************************************/
#include
<stdio.h>
int
main(void) {
unsigned
char cadena[ ]="Bienvenidos a nuestro programa de
gestión";
printf("\n\nUSO DE LA FUNCIÓN PUTS\n\n");
puts(cadena); }
No hay comentarios:
Publicar un comentario