Introducción a las matrices en C
Una matriz es una estructura de datos que se utiliza para almacenar elementos secuenciales del mismo tipo de datos. La posición de un elemento en la secuencia se llama índice. Los índices comienzan de 0 a (n-1).
En este artículo, aprenderá a usar matrices en C. La mayoría de los conceptos aquí abarcan la mayoría de los otros lenguajes de programación, así que asegúrese de tomar nota de ellos.
Definición de matrices
Para definir una matriz, escriba su tipo de datos seguido del nombre de la matriz y corchetes:
int age[8];
Dentro de los corchetes está el número esperado de elementos de datos que recibirá la matriz. Si necesita declarar dos matrices al mismo tiempo, puede hacerlo de la siguiente manera. Vale la pena mencionar que declararlos por separado es la forma preferida.
int age[8], height[8];
También es posible declarar una matriz de la siguiente manera:
int[8] age;
La sintaxis anterior significaría que age es un puntero a una matriz de tipo int . Aunque puede utilizar la "sintaxis de puntero", se prefiere la primera.
A veces, es posible que no sepa cuántos elementos espera que tenga su matriz. En tal caso, tendría que declarar la matriz sin el número de elementos. Vea el ejemplo a continuación:
int age[];
Operaciones en matrices
Para hacer referencia a un elemento de la matriz, escriba el nombre de la matriz seguido de su índice entre corchetes (por ejemplo, edad [5] ). También puede usar variables dentro de los corchetes:
age[x+y]
Debe asegurarse de que el cálculo de estas variables esté en el rango de 0 a (n-1). De lo contrario, obtendrá un error de compilación.
Inicialización
Los elementos de la matriz se pueden proporcionar en la declaración o más adelante en el programa. Esta acción se conoce como inicialización ya que la matriz inicialmente tiene valores nulos.
Vea el ejemplo a continuación. Imprime el valor de un elemento y su índice en la matriz. La línea 5 usa una lista de inicializadores para inicializar la matriz de enteros.
#include <stdio.h>
int main(void) {
printf("%s%11s
", "Element", "Value");
int n[4] = {1, 4, 9, 16};
// output array elements in tabular format
for (size_t i = 0; i < 4; ++i) {
printf("%5u%10d
", i, n[i]);
}
}
Producción :
Element Value
0 1
1 4
2 9
3 16
Uso de matrices para almacenar cadenas
Las matrices también se pueden usar para almacenar cadenas, no solo enteros. Cuando se usa de esta manera, recuerde incluir comillas simples para cada elemento en la lista de inicializadores.
char fruit[]= ['b', 'e', 'r', 'r', 'y', ' ' ];
Observe que se utiliza el tipo de datos char . Un literal de cadena en realidad consta de caracteres individuales, y es por eso que ve char .
La matriz que se muestra termina con una secuencia de escape ( 0 ). Este es un carácter de terminación de cadena llamado carácter nulo. Siempre debe incluir esto al inicializar una lista de matrices.
En realidad, existe una forma más sencilla de inicializar una matriz de caracteres. Primero mostramos el enfoque anterior para que sepa que una matriz de caracteres siempre tiene un carácter final especial ( 0 ). Es un error común para los programadores principiantes tener el tamaño de la matriz menos en uno, olvidando el último elemento ( 0 ).
char string1[5] = "Code";
Suponga que necesita obtener la entrada del usuario y almacenarla en una matriz. Puede utilizar la función de biblioteca estándar scanf para esto.
Sin embargo, debe especificar el número de caracteres que debe esperar la función. Esto se debe a que scanf no comprueba el tamaño de la matriz y puede escribir datos en direcciones más allá de la matriz, lo que provoca un desbordamiento del búfer.
Utilice el especificador de conversión % s para definir la entrada máxima esperada. La función scanf leerá todos los caracteres ingresados hasta que se encuentre un espacio, tabulación, nueva línea o un indicador de fin de archivo.
Avanzando en su programación C
Los recursos que utiliza para aprender son tan cruciales como su entusiasmo por aprender. Aprender sin buenas prácticas hará que su viaje de programación sea un desafío.
C es un lenguaje particularmente difícil de aprender, ya que no está orientado a objetos. Afortunadamente, tenemos muchos recursos para ayudarlo a dominar la programación en C.