Introdução às matrizes na programação C

A matriz é um tipo de estrutura de dados usada para armazenar dados homogêneos em locais de memória contíguos.

Aqui, o índice refere-se à localização de um elemento na matriz. Vamos imaginar se A (L) é o nome da matriz onde "A" é o nome da variável e "L" é o comprimento da matriz, ou seja, o número de elementos presentes na matriz.

Então A (i) representa o elemento nessa posição "i + 1" na matriz. Por exemplo:

A (6) = 72 significa elemento no 6 ° lugar da matriz.

Necessidade de matriz

Ajuda a representar um grande número de elementos usando uma única variável. Também facilita o acesso ao elemento mais rapidamente, fácil de armazenar na localização da memória, usando o índice da matriz que representa a localização de um elemento na matriz.

Acessando elementos na matriz

Acessar qualquer elemento da matriz é muito mais fácil e pode ser feito com complexidade O (1)

Os índices de uma matriz começam de 0 a -1, 0 indica o primeiro elemento da matriz e -1 indica o último elemento da matriz. Da mesma forma, -2 indica o último, mas um elemento da matriz.

Por exemplo:

Seja A uma matriz com comprimento 7 e é necessário acessar o elemento com o valor 94, então ele deve usar A (3).

Sintaxe

printf (”% d”, A (3)) - Isso imprimirá 94 onde 3 é o índice que precisamos acessar e a é a variável da matriz.

Declaração de matriz em C

Em C, a matriz deve ser declarada corretamente antes de usá-la com seu nome e comprimento. Existem três sintaxes nas quais podemos declarar matrizes no programa ac

Sintaxe 1

int A (7) = (21, 56, 32, 52, 63, 12, 48) - Declarando o comprimento e os elementos da 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;
)

Resultado:

Sintaxe 2

int A () = (21, 56, 32, 52, 63, 12, 48) - Declarando o comprimento dos elementos da 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;
)

Resultado:

Sintaxe 3

int A (7); - Declarando apenas o comprimento da 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;
)

Resultado:

Sintaxe 4

int A (7) = (0); - Declarando o comprimento da matriz e o elemento quando um elemento é o mesmo em todas as posições.

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;
)

Resultado:

Sintaxe 5

Declarando o comprimento da matriz e também o valor dos elementos em que todos os valores são iguais

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

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

Sintaxe 6

int * a; - Declarando array como um ponteiro para a localização dos elementos.

Nenhum índice fora da verificação vinculada

Caso se tente acessar o elemento fora dos limites da matriz, nenhum erro será mostrado pelo compilador, em vez disso, ele gera um aviso. E também fornece uma saída inesperada.

Exemplo

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

Se escrevermos printf (a (4));

A saída será 225263545 - Inesperado

Além disso, em C, é um compilador não erro ao inicializar uma matriz com mais elementos numéricos que o comprimento especificado na declaração. Por exemplo, o programa abaixo não mostra um erro.

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;
)

Resultado:

Recuperação de elementos na matriz

Recuperar elementos de uma matriz e imprimi-los é uma tarefa muito fácil. Requer apenas um loop para imprimir n elementos de uma matriz. portanto, a complexidade de um programa desse tipo é O (n).

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

O programa para imprimir os elementos de uma matriz é

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;
)

Resultado:

Matriz multidimensional

A linguagem C também permite matrizes multidimensionais, ou seja, matrizes que podem conter elementos em linhas e colunas.

Declaração

Ao declarar a matriz multidimensional, é necessário especificar o comprimento de todas as dimensões, exceto a esquerda, porque isso é opcional.

Exemplo

A declaração da matriz da maneira abaixo resultará em um erro, pois as dimensões diferentes da maioria da esquerda não são especificadas.

Int a () () (2) = (

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

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

)

Exemplo

Abaixo está uma das sintaxes corretas para declaração da matriz multidimensional em C.

Int a () (3) = (

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

)

Passando a matriz como parâmetro na função

Às vezes, ao criar uma função, exigimos que a função use um número de variáveis ​​necessárias para diferentes funções. Nesse momento, essas variáveis ​​devem ser passadas como parâmetro para a chamada de função. Porém, eventualmente, à medida que o número de variáveis ​​aumenta, devemos usar uma matriz para passar a variável ou, caso algumas operações precisem ser executadas nas matrizes, também é necessário passar uma matriz completa como parâmetro em uma função. Para passar uma matriz como uma variável para a função:

1. Chamada por valor

Nesse tipo de chamada de método, os valores reais da matriz são copiados para o parâmetro formal, onde ambos são armazenados em local diferente, portanto, qualquer alteração feita nos valores não é refletida na função.

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;
)

Resultado:

2. Chamada por Referência

Ao chamar uma função quando, em vez de passar os valores reais da matriz, a referência à variável é passada como parâmetro, é conhecida como chamada por referência.

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;
)

Resultado:

3. Passando a matriz inteira como argumento

Por exemplo - Let seja uma matriz de 7 elementos ..disp é uma função para exibir os elementos de uma matriz que recebem 2 argumentos, primeiro que aponta para o primeiro local da matriz e outro para o comprimento da matriz (var2). a variável arr da função que aponta para a localização do primeiro elemento da matriz e do comprimento, isto é, 7, é passada.

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;
)

Resultado:

Alocação de memória da matriz

A representação de memória na linguagem C é considerada dividida em 5 seções, conforme indicado abaixo: -

  1. Segmento de texto
  2. Segmento de dados inicializado
  3. Segmento de dados não inicializado
  4. Pilha
  5. Montão

Dados, heap e pilha são os três segmentos em que as matrizes podem ser alocadas para armazenar seus elementos, o mesmo que as outras variáveis.

  1. Matrizes dinâmicas: matrizes dinâmicas são matrizes, que precisam da localização da memória para serem alocadas no tempo de execução. Para esse tipo de matriz, a memória é alocada no local da memória heap.
  2. Matrizes globais ou estáticas: esses são os tipos de matrizes que são alocadas no momento da compilação. Assim, a memória do segmento de dados é sempre alocada para esse tipo de matrizes.
  3. Matrizes locais: as matrizes que são inicializadas dentro de uma função ou bloco são conhecidas como matrizes locais. Esses tipos de matrizes recebem memória alocada no segmento de pilha.

Matriz de caracteres

Em C, seqüências de caracteres são consideradas como uma matriz unidimensional de caracteres com o caractere nulo '\ 0' em sua última posição que o compilador adiciona automaticamente a ele.

Por exemplo, "eu amo codificação" é considerado como uma matriz de dimensão única em c de comprimento 14, incluindo o caractere '\ 0' no final.

Declaração: Existem 2 maneiras de declarar e inicializar a matriz de caracteres -

  1. char str (12) = "eu amo código";
  2. char str (12) = ('I', '', 'l', 'o', 'v', 'e', ​​'', 'c', 'o', 'd', 'e', ​​\ 0 ''); - Aqui devemos terminar com o caractere '\ 0' no final.
  3. Char ch (3) = 'modi' - Declaração ilegal

Recebendo entrada e saída

Ao pegar a entrada e exibir a saída em C para o array de caracteres '% c', pode-se usar as funções scanf () e printf (), respectivamente.

A implementação do mesmo para as seqüências de caracteres "% s" pode ser usada, mas interrompe a verificação da ocorrência do primeiro caractere de espaço em branco.

Programa C:

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

Resultado:

Além das funções printf e scanf, C também fornece funções de sequência, como gets () e puts (), para ignorar os espaços em branco da sequência durante a digitalização e a impressão.

Conclusão

Matriz é um tipo de estrutura de dados usada para armazenar os dados homogêneos em um local de memória contígua. Matrizes na programação são usadas como uma representação para diferentes estruturas de dados complexas, como uma árvore, heap, etc. A linguagem C permite matrizes multidimensionais para todos os tipos de dados primitivos. As strings também são representadas como uma matriz de caracteres com o caractere nulo '\ 0' como seu último caractere. As matrizes na programação permitem a recuperação rápida e o acesso direto aos elementos da matriz usando o índice em que o elemento está armazenado.

Artigos recomendados

Este é um guia para matrizes em programação C. Aqui discutimos a introdução, Needs of Array, juntamente com as funções Passing Array incluem Chamada por valor, Chamada por referência e Passagem de toda a matriz como argumento. Você também pode consultar os seguintes artigos para saber mais -

  1. Matrizes 3D em C
  2. Melhores Compiladores C
  3. Padrões em Programação C
  4. Fatorial em C
  5. Guia de matrizes em C #
  6. Matrizes 3D em C ++
  7. Guia para matrizes em PHP
  8. Multiplicação de matrizes de programação C
  9. Funções de matriz PHP | Tipos | Exemplos