Demostración de Arreglos Enteros Unidimensionales y Bidimensionales
Este segmento de código ilustra la declaración, inicialización y acceso a arreglos de enteros, tanto unidimensionales como bidimensionales, en C.
Arreglo Unidimensional
Se declara un arreglo de enteros de tamaño 4, x, y se inicializa con valores. Se imprime el tamaño total del arreglo en bytes. Luego, se itera sobre cada elemento, mostrando su dirección de memoria y su valor.
#include<stdio.h>
#define DIM1 4
void mostrarArregloUnidimensional(){
int arreglo[DIM1] = {1, 9, 8, 4};
int indice;
printf("Tamaño de arreglo: %zu bytes\n", sizeof(arreglo));
for(indice = 0; indice < DIM1; ++indice) {
printf("Dirección: %p, Valor: %d\n", &arreglo[indice], arreglo[indice]);
}
printf("Dirección base del arreglo: %p\n", arreglo);
}
Arreglo Bidimensional
Se declara un arreglo bidimensional de enteros, matriz, con dimensiones 2x4, y se inicializa. Se muestra el tamaño total del arreglo. Se utiliza un bucle anidado para recorrer cada elemento, imprimiendo su dirección y valor. Adicionalmente, se imprime la dirección de cada fila y la dirección base de la matriz.
#include<stdio.h>
#define FILAS 2
#define COLUMNAS 4
void mostrarArregloBidimensional(){
int matriz[FILAS][COLUMNAS] = {{1, 9, 8, 4}, {2, 0, 4, 9}};
int fila, col;
printf("Tamaño de matriz: %zu bytes\n", sizeof(matriz));
for(fila = 0; fila < FILAS; ++fila) {
for(col = 0; col < COLUMNAS; ++col) {
printf("Dirección: %p, Valor: %d\n", &matriz[fila][col], matriz[fila][col]);
}
}
printf("\n");
printf("Dirección base de la matriz: %p\n", matriz);
printf("Dirección de la fila 0: %p\n", matriz[0]);
printf("Dirección de la fila 1: %p\n", matriz[1]);
printf("\n");
}
Función Principal
La función main coordina la ejecución de las demostraciones de arreglos unidimensionales y bidimensionales, imprimiendo mensajes descriptivos antes de llamar a las funciones correspondientes.
int main(){
printf("Demostración 1: Arreglo Unidimensional de Enteros\n");
mostrarArregloUnidimensional();
printf("\nDemostración 2: Arreglo Bidimensional de Enteros\n");
mostrarArregloBidimensional();
return 0;
}
Observaciones:
- En memoria, los elementos de un arreglo (unidimensional o bidimensional) se almaceann de forma contigua.
- La dirección base de un arreglo unidimensional (
x) es la misma que la dirección del primer elemento (&x\[0\]). Para un arreglo bidimensional, la dirección base (x) es la misma que la dirección de su primera fila (x\[0\]). La diferencia de direcciones entre elementos consecutivos de un arreglo unidimensional es igual al tamaño de un elemento (ej. 4 bytes paraint). La diferencia entre direcciones de filas consecutivas en un arreglo bidimensional es el tamaño de una fila completa.