Introducción a las matrices en la programación en C

La matriz es un tipo de estructura de datos que se utiliza para almacenar datos homogéneos en ubicaciones de memoria contiguas.

Aquí el índice se refiere a la ubicación de un elemento en la matriz. Imaginemos si A (L) es el nombre de la matriz donde “A” es el nombre de la variable y “L” es la longitud de la matriz, es decir, el número de elementos presentes en la matriz.

Entonces A (i) representa el elemento en esa posición "i + 1" en la matriz, por ejemplo:

A (6) = 72 significa elemento en la ubicación 6 + 1 de la matriz.

Necesidad de matriz

Ayuda a representar una gran cantidad de elementos usando una sola variable. También hace que el acceso al elemento sea más rápido y fácil de almacenar en la ubicación de la memoria utilizando el índice de la matriz que representa la ubicación de un elemento en la matriz.

Acceso a elementos en matriz

Acceder a cualquier elemento de la matriz es mucho más fácil y se puede hacer en complejidad O (1)

Los índices de una matriz comienzan desde 0 hasta -1.0 indica el primer elemento de la matriz y -1 indica el último elemento de la matriz. Del mismo modo, -2 indica el último pero un elemento de la matriz.

Por ejemplo:

Si A es una matriz con longitud 7 y uno necesita acceder al elemento con valor 94, entonces debe usar A (3).

Sintaxis

printf (”% d”, A (3)) - Esto imprimirá 94 donde 3 es el índice al que necesitamos acceder y a es la variable de la matriz.

Declaración de matriz en C

En C, la matriz debe declararse correctamente antes de usarla con su nombre y longitud. Hay tres sintaxis en las que podemos declarar matrices en el programa ac

Sintaxis 1

int A (7) = (21, 56, 32, 52, 63, 12, 48) - Declarando la longitud y los elementos de la matriz

Programa C

#include
int main(
int a(7) = (21, 56, 32, 52, 63, 12, 48);
int i;
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Salida:

Sintaxis 2

int A () = (21, 56, 32, 52, 63, 12, 48) - Declarando la longitud de los elementos de la matriz

Programa C

#include
int main(
int a() = (21, 56, 32, 52, 63, 12, 48);
int i;
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Salida:

Sintaxis 3

int A (7); - Declarar solo la longitud de la matriz.

Programa C

#include
int main(
int a(7) ;
int i;
printf(“Please enter the array elements”);
for(i=0;i<7;i++)(
scanf(“%d\n”, &a(i));
)
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Salida:

Sintaxis 4

int A (7) = (0); - Declarar la longitud de la matriz y el elemento cuando un elemento es el mismo en todas las posiciones.

Programa C

#include
int main(
int a(7)=(0) ;
int i;
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)

Salida:

Sintaxis 5

Declarando la longitud de la matriz y también el valor de los elementos donde todos los valores son iguales

Caso1 - int a (3) = ((0..1) = 3) -

Caso 2 - int a (3) = (0); -

Sintaxis 6

int * a; - Declarando la matriz como un puntero a la ubicación de los elementos.

Sin índice de cuenta corriente

En caso de que uno intente acceder al elemento fuera de los límites de la matriz, el compilador no muestra ningún error, sino que genera una advertencia. Y también da una salida inesperada.

Ejemplo

a (4) = (2, 3, 4, 5);

Si escribimos printf (a (4));

La salida será 225263545 - Inesperado

Además, en C, su compilador no comete errores al inicializar una matriz con más elementos numéricos que la longitud especificada en la declaración. Por ejemplo, el siguiente programa no muestra un error en su lugar.

Programa C

#include
int main(
int arr(2)=(10, 22, 56, 32, 45, 89) ;
int i;
printf(“Elements of array are”);
for(i=0;i<2;i++)(
printf(“%d\n”, arr(i));
)
return 0;
)

Salida:

Recuperación de elementos en matriz

La recuperación de elementos de una matriz e imprimirlos es una tarea muy fácil. Solo requiere un bucle para imprimir n elementos de una matriz. así, la complejidad de tal programa es O (n).

Por ejemplo, int int (7) = (23, 56, 8, 944, 58, 24, 5);

El programa para imprimir los elementos de una matriz es

Programa C

#include
int main(
int arr(7)=(23, 56, 8, 944, 58, 24, 5) ;
int i;
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, arr(i));
)
return 0;
)

Salida:

Matriz multidimensional

El lenguaje C también permite matrices multidimensionales, es decir, matrices que pueden contener elementos en filas y columnas.

Declaración

Al declarar la matriz multidimensional, se debe especificar la longitud de todas las dimensiones, excepto la izquierda, porque eso es opcional.

Ejemplo

La declaración de la matriz de la siguiente manera dará como resultado un error ya que no se especifican dimensiones distintas a la izquierda.

Int a () () (2) = (

((1, 2), (3, 4)),

((5, 6), (7, 8))

)

Ejemplo

A continuación se muestra una de las sintaxis correctas para la declaración de una matriz multidimensional en C.

Int a () (3) = (

(52, 56, 86), (44, 6, 21)

)

Pasar matriz como parámetro en función

A veces, al hacer una función, requerimos que la función use una serie de variables que necesita tomar de diferentes funciones. En ese momento, esas variables deben pasarse como un parámetro para esa llamada de función. Pero eventualmente, a medida que aumenta el número de variables, debemos usar una matriz para pasar la variable o, en caso de que algunas operaciones deban realizarse en las matrices, entonces también es necesario que pase una matriz completa como parámetro en una función. Para pasar una matriz como variable a la función:

1. Llamada por valor

En este tipo de llamada al método, los valores reales de la matriz se copian en el parámetro formal donde ambos se almacenan en una ubicación diferente, por lo que cualquier cambio realizado en los valores no se refleja en la función.

Programa C

#include
Void show( char ch)
(
printf("%c ", ch);
)
int main()
(
char arr() = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
for (int x=0; x<10; x++)
(
show(arr(x));//value of array //elements are passed as an argument
)
return 0;
)

Salida:

2. Llamada por referencia

Al llamar a una función cuando en lugar de pasar los valores reales de la matriz, la referencia a la variable se pasa como un parámetro y luego se conoce como llamada por referencia.

Programa C

#include
Void show( char ch)
(
printf("%c ", ch);
)
int main()
(
char arr() = (1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
for (int x=0; x<10; x++)
(
show(&arr(x));//reference of array //elements are passed as an argument
)
return 0;
)

Salida:

3. Pasar toda la matriz como argumento

Por ejemplo, dejemos que sea una matriz de 7 elementos.disp es una función para mostrar los elementos de una matriz que toman 2 argumentos, primero que apunta a la primera ubicación de la matriz y otra a la longitud de la matriz (var2). la función arr variable que apunta a la ubicación del primer elemento de la matriz y la longitud, es decir, se pasa 7.

Programa C

#include
void disp( int *var1, int var2)
(
for(int x=0; x (
printf("Value of var_arr(%d) is: %d \n", x, *var1);
/*increment pointer for next element fetch*/
var1++;
)
)
int main()
(
int var_arr() = (12, 22, 38, 85, 65, 66, 77);
disp(var_arr, 7);
return 0;
)
#include
void disp( int *var1, int var2)
(
for(int x=0; x (
printf("Value of var_arr(%d) is: %d \n", x, *var1);
/*increment pointer for next element fetch*/
var1++;
)
)
int main()
(
int var_arr() = (12, 22, 38, 85, 65, 66, 77);
disp(var_arr, 7);
return 0;
)

Salida:

Asignación de memoria de matriz

La representación de la memoria en lenguaje C se considera dividida en 5 secciones, como se detalla a continuación:

  1. Segmento de texto
  2. Segmento de datos inicializado
  3. Segmento de datos sin inicializar
  4. Apilar
  5. Montón

Los datos, el montón y la pila son los tres segmentos donde se puede asignar memoria a las matrices para almacenar sus elementos, al igual que otras variables.

  1. Matrices dinámicas: las matrices dinámicas son matrices, que necesitan una ubicación de memoria que se asigne en tiempo de ejecución. Para este tipo de matrices, la memoria se asigna en la ubicación de la memoria de almacenamiento dinámico.
  2. Matrices globales o estáticas: son el tipo de matrices que se asignan en tiempo de compilación. Por lo tanto, la memoria de segmento de datos siempre se asigna para este tipo de matrices.
  3. Matrices locales: las matrices que se inicializan dentro de una función o bloque se conocen como matrices locales. Estos tipos de matrices od obtienen memoria asignada en el segmento de pila.

Matriz de personajes

En C, las cadenas se consideran una matriz unidimensional de caracteres con el carácter nulo '\ 0' en su última posición que el compilador le agrega automáticamente.

Por ejemplo, "me encanta la codificación" se considera una matriz de dimensión única en c de longitud 14 que incluye el carácter '\ 0' al final.

Declaración: hay 2 formas de declarar e inicializar la matriz de caracteres:

  1. char str (12) = "me encanta el código";
  2. char str (12) = ('I', '', 'l', 'o', 'v', 'e', ​​'', 'c', 'o', 'd', 'e, ' \ 0 ''); - Aquí debemos terminar con el carácter '\ 0' al final.
  3. Char ch (3) = 'modi' - Declaración ilegal

Tomando entrada y salida

Al tomar la entrada y mostrar la salida en C para la matriz de caracteres '% c' se puede usar la función scanf () y printf () respectivamente.

Mientras se implementa lo mismo para las cadenas, se puede usar "% s", pero detiene el escaneo en la aparición del primer carácter de espacio en blanco.

Programa C:

#include
#include
int main()
(
char str(20);
printf(“Enter a string”);
scanf(“%(^\n)”, &str);
printf(“%s”, str);
return 0;
)

Salida:

Además de las funciones printf y scanf, C también proporciona funciones de cadena como gets () y pone () para ignorar los espacios en blanco de la cadena mientras escanea e imprime.

Conclusión

La matriz es un tipo de estructura de datos utilizada para almacenar los datos homogéneos en una ubicación de memoria contigua. Las matrices en Programación se utilizan como representación de diferentes estructuras de datos complejas, como un árbol, montón, etc. El lenguaje C permite matrices multidimensionales para todos los tipos de datos primitivos. Las cadenas también se representan como una matriz de caracteres con el carácter nulo '\ 0' como último carácter. Las matrices en Programación permiten la recuperación rápida y el acceso directo a los elementos de la matriz utilizando el índice donde se almacena el elemento.

Artículos recomendados

Esta es una guía de matrices en programación en C. Aquí discutimos la Introducción, las necesidades de la matriz, junto con las funciones de la matriz de paso incluye Llamada por valor, Llamada por referencia y Pasar toda la matriz como argumento. También puede consultar los siguientes artículos para obtener más información:

  1. Matrices 3D en C
  2. Mejores compiladores de C
  3. Patrones en programación C
  4. Factorial en C
  5. Guía de matrices en C #
  6. Matrices 3D en C ++
  7. Guía de matrices en PHP
  8. C Multiplicación de la matriz de programación
  9. Funciones de matriz PHP | Tipos | Ejemplos