C Matrices (Arrays)
Matrices (Arrays)
Las matrices se utilizan para almacenar múltiples valores en una sola variable, en lugar de declarar variables separadas para cada valor.
Para crear una matriz, defina el tipo de datos (como int
) y especifique el nombre de la matriz seguido de corchetes [] .
Para insertar valores, utilice una lista separada por comas, entre llaves:
int myNumbers[] = {25, 50, 75, 100};
Ahora hemos creado una variable que contiene una matriz de cuatro números enteros.
Acceder a los elementos de una matriz
Para acceder a un elemento de matriz, consulte su número de índice.
Los índices de matriz comienzan con 0: [0] es el primer elemento. [1] es el segundo elemento, etc.
Esta declaración accede al valor del primer elemento [0] en myNumbers
:
Ejemplo
int myNumbers[] = {25, 50, 75, 100};
printf("%d", myNumbers[0]);
// Salidas 25
Inténtalo tú mismo »
Cambiar un elemento de matriz
Para cambiar el valor de un elemento específico, consulte el número de índice:
Ejemplo
myNumbers[0] = 33;
Ejemplo
int myNumbers[] = {25, 50, 75, 100};
myNumbers[0] = 33;
printf("%d", myNumbers[0]);
// Ahora genera 33 en lugar de 25
Inténtalo tú mismo »
Recorrer una matriz
Puedes recorrer los elementos de la matriz con el bucle for
.
El siguiente ejemplo genera todos los elementos de la matriz myNumbers
:
Ejemplo
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}
Inténtalo tú mismo »
Establecer tamaño de matriz
Otra forma común de crear matrices es especificar el tamaño de la matriz y agregar elementos más adelante:
Ejemplo
// Declarar una matriz de cuatro números enteros:
int myNumbers[4];
// Agregar elementos
myNumbers[0] = 25;
myNumbers[1] = 50;
myNumbers[2] = 75;
myNumbers[3] = 100;
Inténtalo tú mismo »
Al utilizar este método, debe conocer el número de elementos de la matriz de antemano para que el programa almacene suficiente memoria.
No puedes cambiar el tamaño de la matriz después de su creación.
Obtener tamaño o longitud de la matriz
Para obtener el tamaño de una matriz, puede utilizar el operador sizeof
:
Ejemplo
int myNumbers[] = {10, 25, 50, 75, 100};
printf("%lu", sizeof(myNumbers)); // Impresiones 20
Inténtalo tú mismo »
¿Por qué el resultado muestra 20
en lugar de 5
, cuando la matriz contiene 5 elementos?
— Se debe a que el operador sizeof
devuelve el tamaño de un tipo en bytes.
Aprendiste del capítulo sobre tipos de datos que un tipo int
suele tener 4 bytes, por lo que desde el principio ejemplo anterior, 4 x 5 (4 bytes x 5 elementos) = 20 bytes.
Conocer el tamaño de la memoria de una matriz es excelente cuando se trabaja con programas más grandes que requieren una buena administración de la memoria.
Pero cuando solo quieres saber cuántos elementos tiene una matriz, puedes usar la siguiente fórmula (que divide el tamaño de la matriz por el tamaño de un elemento de la matriz):
Ejemplo
int myNumbers[] = {10, 25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
printf("%d", length); // Impresiones 5
Inténtalo tú mismo »
Hacer mejores bucles
En la sección de bucles de matriz anterior, escribimos el tamaño de la matriz en la condición del bucle (i < 4
). Esto no es ideal, ya que solo funcionará para matrices de un tamaño específico.
Sin embargo, al usar la fórmula sizeof
del ejemplo anterior, ahora podemos crear bucles que funcionen para matrices de cualquier tamaño, lo cual es más sostenible.
En lugar de escribir:
Ejemplo
int myNumbers[] = {25, 50, 75, 100};
int i;
for (i = 0; i < 4; i++) {
printf("%d\n", myNumbers[i]);
}
Inténtalo tú mismo »
es mejor escribir:
Ejemplo
int myNumbers[] = {25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
int i;
for (i = 0; i <
length; i++) {
printf("%d\n", myNumbers[i]);
}
Inténtalo tú mismo »
Ejemplo de la vida real
Para demostrar un ejemplo práctico del uso de matrices, creemos un programa que calcule el promedio de diferentes edades:
Ejemplo
// Una matriz que almacena diferentes edades
int ages[] = {20, 22, 18, 35, 48, 26, 87, 70};
float avg, sum = 0;
int i;
// Obtener la longitud de la matriz
int length = sizeof(ages) / sizeof(ages[0]);
// Recorre los elementos de la matriz
for (int i = 0; i < length; i++) {
sum += ages[i];
}
// Calcula el promedio dividiendo la suma por la longitud
avg = sum / length;
// imprimir el promedio
printf("La edad promedio es: %.2f", avg);
Inténtalo tú mismo »