Manipulación de Arreglos Unidimensionales y Bidimensionales en C

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 (&amp;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 para int). La diferencia entre direcciones de filas consecutivas en un arreglo bidimensional es el tamaño de una fila completa.

Etiquetas: C arreglos unidimensionales bidimensionales memoria

Publicado el 6-22 07:45