Matrizes em C ++ - Declare - Inicializar - Ponteiro para exemplos de matriz

Índice:

Anonim

O que é uma matriz?

Uma matriz é uma estrutura de dados que armazena um elemento do mesmo tipo de dados sequencialmente. Uma matriz C ++ tem um tamanho fixo.

Você pode ver uma matriz como uma coleção de variáveis ​​de um tipo de dados semelhante. Em vez de declarar cada variável e atribuir a ela um valor individualmente, você pode declarar uma variável (a matriz) e adicionar os valores das várias variáveis ​​a ela. Cada valor agregado ao array é identificado por um índice.

Neste tutorial C ++, você aprenderá:

  • O que é uma matriz?
  • Por que precisamos de matrizes?
  • Declare uma matriz em C ++
  • Inicialização de Array
  • Tipos de matrizes
    • Matriz unidimensional
    • Matriz multidimensional
    • Matriz bidimensional
    • Matriz Tridimensional
    • Ponteiro para uma matriz
  • Acessando os valores de um Array
  • Vantagens de um array em C ++
  • Desvantagens de um array em C ++

Por que precisamos de matrizes?

Os arrays são muito importantes em qualquer linguagem de programação. Eles fornecem uma maneira mais conveniente de armazenar variáveis ​​ou uma coleção de dados de um tipo de dados semelhante juntos, em vez de armazená-los separadamente. Cada valor da matriz será acessado separadamente.

Declare uma matriz em C ++

A declaração da matriz em C ++ envolve a declaração do tipo e também do número de elementos a serem armazenados pela matriz. Sintaxe:

type array-Name [ array-Size ];

Regras para declarar uma matriz de dimensão única em C ++.

  • Tipo: o tipo é o tipo de elemento a ser armazenado na matriz e deve ser um tipo de dados C ++ válido.
  • Array-Name: O array-Name é o nome a ser atribuído ao array.
  • Array-Size: O array-Size é o número de elementos a serem armazenados no array. Deve ser um número inteiro e maior que 0.

Por exemplo, você pode criar uma matriz chamada idade e armazenar as idades de 5 alunos da seguinte maneira:

int age[5];

O array age armazenará 5 inteiros representando as idades de diferentes alunos.

Inicialização de Array

A inicialização do array é o processo de atribuição / armazenamento de elementos a um array. A inicialização pode ser feita em uma única instrução ou uma a uma. Observe que o primeiro elemento em uma matriz é armazenado no índice 0, enquanto o último elemento é armazenado no índice n-1, onde n é o número total de elementos na matriz.

No caso da matriz de idade, o primeiro elemento será armazenado no índice 0, enquanto o último elemento será armazenado no índice 4.

Vamos usar a matriz de idade para demonstrar como a inicialização da matriz pode ser feita:

int age[5] = {19, 18, 21, 20, 17};

O número total de elementos em {} não pode exceder o valor declarado em []. O elemento 19 está no índice 0, 18 no índice 1, 21 no índice 2, 20 no índice 3 e 17 no índice 4. Se você não declarar o número de elementos a serem armazenados na matriz entre [], a matriz só será grande o suficiente para conter os elementos adicionados em {}. Por exemplo:

int age[] = {19, 18, 21, 20, 17};

A instrução acima criará exatamente a mesma matriz que a anterior. Você também pode atribuir um elemento a uma matriz usando seu índice. Por exemplo:

age[3] = 20;

A instrução acima armazenará o valor 20 no índice 3 da matriz chamada idade. Isso significa que 20 será o elemento da matriz.

Tipos de matrizes

Existem dois tipos de matrizes C ++:

  • Matriz unidimensional
  • Matriz multidimensional
  • Ponteiro para uma matriz

Matriz unidimensional

Esta é uma matriz na qual os itens de dados são organizados linearmente em apenas uma dimensão. É comumente chamado de array 1-D. Sintaxe:

datatype array-name[size];
  • O nome da matriz é o nome da matriz.
  • O tamanho é o número de itens a serem armazenados na matriz.

Por exemplo:

#include using namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout <

Resultado:

Aqui está uma captura de tela do código:

Explicação do código:

  1. Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
  2. Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
  3. Chamar a função main () dentro da qual a lógica do programa deve ser adicionada.
  4. Início do corpo da função main ().
  5. Declarando uma matriz chamada idade para armazenar 5 inteiros. Os 5 inteiros também foram inicializados.
  6. Crie uma variável inteira x usando um loop for.
  7. O início do corpo do loop for.
  8. Usando a variável de loop x para iterar sobre os valores da idade do array e imprimi-los no console. O "\ n" é um caractere de nova linha e imprime em uma nova linha após cada iteração.
  9. Fim do corpo do loop for.
  10. Fim do corpo da função main ().

Matriz multidimensional

Este é um array no qual os itens de dados são organizados para formar um array de arrays. Uma matriz multidimensional pode ter qualquer número de dimensões, mas as matrizes bidimensionais e tridimensionais são comuns. Sintaxe:

datatype array-name[d1][d2][d3]… [dn];

O nome da matriz é o nome da matriz que terá n dimensões. Por exemplo:

Matriz bidimensional

Um array 2D armazena dados em uma lista com array 1-D. É uma matriz com linhas e colunas. Para declarar uma matriz 2D, use a seguinte sintaxe:

type array-Name [ x ][ y ];

O tipo deve ser um tipo de dados C ++ válido. Veja uma matriz 2D como uma tabela, onde x denota o número de linhas enquanto y denota o número de colunas. Isso significa que você identifica cada elemento em uma matriz 2D usando a forma a [x] [y], onde x é o número de linhas ey o número de colunas às quais o elemento pertence.

Aqui está um exemplo de como inicializar uma matriz 2D:

int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};

No exemplo acima, temos uma matriz 2D que pode ser vista como uma matriz 2x3. Existem 2 linhas e 3 colunas. O elemento 0 pode ser acessado como [0] [1] porque está localizado na interseção da linha indexada 0 e coluna indexada 1. O elemento 3 pode ser acessado como [1] [2] porque está localizado no intersecção da linha indexada 1 e coluna indexada 2.

Observe que simplesmente adicionamos chaves para diferenciar as diferentes linhas de elementos. A inicialização também poderia ter sido feita da seguinte forma:

int a[2][3] = {0, 2, 1, 4, 3, 7};};

O exemplo C ++ a seguir demonstra como inicializar e percorrer uma matriz 2D:

#include using namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" <

Resultado:

Aqui está uma captura de tela do código acima:

Explicação do código:

  1. Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
  2. Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
  3. Chamar a função main () na qual o código deve ser adicionado.
  4. Início do corpo da função main ().
  5. Um comentário. O compilador C ++ irá pular isso.
  6. Declarando uma matriz 2D de 3 linhas e 2 colunas. Os itens também foram adicionados ao array.
  7. Um comentário. O compilador C ++ irá pular isso.
  8. Criando uma variável i usando um loop for. Esta variável irá iterar sobre os índices de linha da matriz.
  9. Criando uma variável j usando um loop for. Esta variável irá iterar sobre os índices de coluna da matriz.
  10. Início do corpo das alças.
  11. Imprima os valores das variáveis ​​i e j no console entre colchetes no console.
  12. Imprima o valor armazenado no índice [i] [j] da matriz a.
  13. Fim do corpo das alças.
  14. A função main () deve retornar um valor inteiro se o programa funcionar bem.
  15. Fim do corpo da função main ().

Matriz Tridimensional

Uma matriz 3D é uma matriz de matrizes. Cada elemento em uma matriz 3D é identificado por um conjunto de 3 índices. Para acessar os elementos de uma matriz 3D, usamos três loops for. Por exemplo:

#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";}

Resultado:

Aqui está uma captura de tela do código:

Explicação do código:

  1. Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
  2. Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
  3. Chamar a função main () dentro da qual a lógica do programa deve ser adicionada.
  4. Início do corpo da função main ().
  5. Declaração de uma matriz 3D chamada de tamanho 2x3x2. Os valores da matriz também foram inicializados.
  6. Acessando o item armazenado no índice [0] [1] [0] da matriz e imprimindo-o no console.
  7. Acessando o item armazenado no índice [0] [1] [1] da matriz e imprimindo-o no console.
  8. Fim do corpo da função main ().

Ponteiro para uma matriz

Um ponteiro é uma variável que contém um endereço. Além de usar um ponteiro para armazenar o endereço de uma variável, podemos usá-lo para armazenar o endereço de uma célula do array. O nome de uma matriz aponta constantemente para seu primeiro elemento. Considere a declaração fornecida abaixo:

int age[5];

A idade é um ponteiro para $ idade [0], o endereço do primeiro elemento de uma matriz chamada idade. Considere o seguinte exemplo:

#include using namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;}

Resultado:

Observe que o primeiro valor da saída acima pode retornar um valor diferente dependendo do endereço atribuído ao primeiro elemento da matriz na memória do seu computador.

Aqui está uma captura de tela do código:

Explicação do código:

  1. Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
  2. Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
  3. Chamar a função main () dentro da qual a lógica do programa deve ser adicionada.
  4. Início do corpo da função main ().
  5. Declarando uma variável de ponteiro chamada * john.
  6. Declarando uma matriz de inteiros chamada idade para armazenar 5 inteiros. Os valores dos inteiros também foram inicializados.
  7. Atribuindo à variável john o valor do endereço do item armazenado no primeiro índice da idade do array.
  8. Imprimindo o valor da variável john, que é o endereço do item armazenado no primeiro índice da idade do array.
  9. Imprimindo o primeiro valor armazenado na idade da matriz.
  10. Fim do corpo da função main ().

Nomes de array podem ser usados ​​como ponteiros constantes e o vice-versa também é verdadeiro. Isso significa que você pode acessar o valor armazenado no índice 3 do array age com * (age + 3). Por exemplo:

#include using namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;}

Resultado:

Aqui está uma captura de tela do código:

Explicação do código:

  1. Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
  2. Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
  3. Chamar a função main () e iniciar o corpo da função main ().
  4. Um comentário. O compilador C ++ irá pular isso.
  5. Declarando uma matriz chamada idade para armazenar 5 inteiros.
  6. Criando um ponteiro inteiro p.
  7. Atribuindo p o valor do endereço do primeiro elemento do array age.
  8. Um comentário. O compilador C ++ irá pular isso.
  9. Imprima algum texto no console.
  10. Crie um inteiro x usando um loop for. O {marca o início do corpo do loop for a.
  11. Imprima os valores de x combinados com algum outro texto no console.
  12. Imprima os valores de * (p + x) no console.
  13. Fim do corpo do loop for.
  14. Imprima algum texto no console.
  15. Crie uma variável x usando um loop for. O {marca o início do corpo do loop for.
  16. Imprima os valores de x de 0 a 4 junto com algum outro texto.
  17. Imprima os valores de * (idade + x).
  18. Fim do corpo do loop for.
  19. Valor de retorno se o programa for executado com sucesso.
  20. Fim do corpo da função main ().

Acessando os valores de um Array

Os elementos de uma matriz são acessados ​​usando seus respectivos índices. O índice do elemento a ser acessado é adicionado entre colchetes [] imediatamente após o nome do array. Por exemplo:

int john = age[2];

No exemplo acima, estamos simplesmente declarando que a idade de john é armazenada no índice 2 do array denominado idade. Isso significa que john's age é o terceiro valor no array age. Aqui está um exemplo C ++ completo que mostra como acessar e imprimir este valor:

#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"<

Resultado:

Aqui está uma captura de tela do código:

Explicação do código:

  1. Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
  2. Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
  3. Chamar a função main () na qual o código deve ser adicionado.
  4. Início de um corpo da função main ().
  5. Declarando uma matriz chamada idade para armazenar 5 elementos inteiros.
  6. Acessando o valor armazenado no índice 2 do array age e armazenando seu valor em uma variável chamada john.
  7. Imprimindo o valor da variável john no console junto com outro texto.

Vantagens de um array em C ++

Aqui, estão os prós / benefícios de usar Array em C ++:

  • Os elementos da matriz podem ser percorridos facilmente.
  • Fácil de manipular dados de array.
  • Os elementos da matriz podem ser acessados ​​aleatoriamente.
  • Os arrays facilitam a otimização do código; portanto, podemos realizar muito trabalho usando menos código.
  • Fácil de classificar os dados do array.

Desvantagens de um array em C ++

  • Um array tem um tamanho fixo; portanto, não podemos adicionar novos elementos a ele após a inicialização.
  • Alocar mais memória do que o necessário leva ao desperdício de espaço de memória e menos alocação de memória pode criar um problema.
  • O número de elementos a serem armazenados em uma matriz deve ser conhecido com antecedência.

Resumo

  • Uma matriz é uma estrutura de dados que armazena elementos do mesmo tipo de dados.
  • Os elementos da matriz são armazenados sequencialmente.
  • Os elementos da matriz são denotados usando seus respectivos índices. O primeiro elemento está no índice 0, enquanto o último elemento está no índice n-1, onde é o número total de elementos da matriz.
  • A declaração de uma matriz envolve a definição dos tipos de dados dos elementos da matriz, bem como o número de elementos a serem armazenados na matriz.
  • Uma matriz unidimensional armazena elementos sequencialmente.
  • Uma matriz bidimensional armazena elementos em linhas e colunas.
  • Uma matriz tridimensional é uma matriz de matrizes.
  • Os elementos podem ser adicionados a uma matriz usando seus índices.
  • Os elementos da matriz são acessados ​​por meio de seus índices.
  • Uma matriz multidimensional possui mais de uma dimensão.
  • O nome da matriz aponta para seu primeiro elemento.
  • Os arrays têm um tamanho fixo, o que significa que novos elementos não podem ser adicionados ao array após sua inicialização.