Com arrays, você pode armazenar um conjunto de dados re­la­ci­o­na­dos em C, sem a ne­ces­si­dade de criar várias variáveis. Ge­ral­mente, os arrays são uni­di­men­si­o­nais, mas podem ser ex­pan­di­dos para quantas dimensões forem ne­ces­sá­rias. Mos­tra­re­mos como criar e utilizar arrays 2D em C de forma eficaz.

Noções básicas sobre arrays em C

Para criar e dominar efe­ti­va­mente arrays 2D em C, é im­por­tante primeiro entender alguns conceitos básicos sobre arrays na linguagem de pro­gra­ma­ção C. Como em muitas outras lin­gua­gens, arrays são um bloco de memória onde múltiplos valores do mesmo tipo de dado podem ser ar­ma­ze­na­dos. Dessa forma, é possível armazenar e agrupar múltiplos valores sob um único nome de variável. O tamanho do array deve ser conhecido no momento da com­pi­la­ção e não pode ser alterado pos­te­ri­or­mente.

int números1[15];
// Opcionalmente, os valores armazenados podem ser especificados no momento da criação:
int números2[5] = {1, 2, 3, 4, 5};
c

Neste exemplo, o tipo de dados a serem ar­ma­ze­na­dos é es­pe­ci­fi­cado como de costume antes do nome da variável. Os colchetes indicam que essa variável não é um valor único, mas um array. O número inteiro entre os colchetes indica quantos elementos desse tipo de dado podem ser ar­ma­ze­na­dos no array. O array números1 é criado não ini­ci­a­li­zado no exemplo acima, o que significa que nenhum valor é escrito nos campos. Esses valores podem ser pre­en­chi­dos pos­te­ri­or­mente no código.

O array números2, por outro lado, é ini­ci­a­li­zado ma­nu­al­mente no momento da criação. Essa abordagem ge­ral­mente não é re­co­men­dada para arrays maiores, pois pode ser muito tra­ba­lhosa e resultar em um código menos legível. É pre­fe­rí­vel preencher os arrays pro­gra­ma­ti­ca­mente, por exemplo, usando um loop for.

int numbers3[100]; 
for(int i = 0; i < 100; i++) { 
numbers3[i] = i + 1; 
}
// Cria um array que contenha os números inteiros de 1 a 100.
c
Nota

De­pen­dendo do sistema ope­ra­ci­o­nal em que você está tra­ba­lhando, do padrão C que está uti­li­zando e de onde no seu programa você declarou uma variável não ini­ci­a­li­zada, essa variável pode conter um valor aleatório. Isso também se aplica aos campos de arrays. Portanto, é melhor não acessar campos de arrays que ainda não foram ini­ci­a­li­za­dos, es­pe­ci­al­mente se o valor ar­ma­ze­nado neles for in­ter­pre­tado como um ponteiro.

Depois que um array é criado, é possível acessar valores in­di­vi­du­ais usando seu índice. Note que os arrays começam com índice 0. O exemplo a seguir ilustra isso:

int números2[5] = {1, 2, 3, 4, 5};
números2[3] = números2[2];
printf("%d\n", números2[3]);
// Ausgabe: 3
c

Para criar um array 2D em C, você pode fazer sso de­cla­rando um array onde cada elemento é outro array. Isso permite organizar dados em duas dimensões, como uma grade, matriz ou tabela.

Criar 2D array em C

2D arrays em C são sim­ples­mente arrays uni­di­men­si­o­nais onde cada elemento é outro array. Portanto, um array 2D pode ser entendido como uma tabela ou matriz de valores. 2D Arrays são criados e pre­en­chi­dos com a seguinte sintaxe:

ints_two_dimensions[10][10]; 
ints_two_dimensions[0][1] = 0; 
ints_two_dimensions[2][1] = 2; 
ints_two_dimensions[9][4] = 36; 
// etc.
c

Aqui, o número entre colchetes à esquerda re­pre­senta o índice no primeiro array ao qual se deseja acessar, e o número à direita re­pre­senta o índice no segundo array. Esses dois números podem ser ima­gi­na­dos como co­or­de­na­das 2D ou números de linha e coluna. Assim como os arrays uni­di­men­si­o­nais, arrays bi­di­men­si­o­nais também podem ser ini­ci­a­li­za­dos com valores no momento da criação.

floats_two_dimensions[2][6] = { 
{0.1, 3.56, 6.346, 8.9, 45.345, 2.284}, 
{7.0, 1.12, 9.74, 0.0, 3.56, 4.4} 
}
c

O princípio de um array dentro de outro array não está limitado a duas dimensões. Com este método, você pode criar arrays com quantas dimensões forem ne­ces­sá­rias.

int ints_four_dimensions[10][10][10][10];
c
Hos­pe­da­gem que se adapta às suas ambições
  • Fique online com 99,99% de tempo de atividade e segurança robusta
  • Aumente o de­sem­pe­nho com um clique à medida que o tráfego cresce
  • Inclui domínio gratuito, SSL, e-mail e suporte 24 horas por dia, 7 dias por semana

Aplicar 2D arrays em C

Iterar sobre array 2D

O caso de uso mais comum para arrays 2D em C (ou arrays mul­ti­di­men­si­o­nais) é a criação de es­tru­tu­ras de dados mul­ti­di­men­si­o­nais. No exemplo a seguir, um array 2D é pre­en­chido al­ter­na­da­mente com zeros e uns para re­pre­sen­tar um tabuleiro de xadrez:

#include <stdio.h>
#define ARRAY_LENGTH 8
int main() {
    int tabuleirodexadrez[8][8];
    for(int i = 0; i < ARRAY_LENGTH; i++) {
        for(int j = 0; j < ARRAY_LENGTH; j++) {
           tabuleirodexadrez[i][j] = (i + j) % 2;
            printf("%d", tabuleiro de xadrez[i][j]);
        }
        printf("\n");
    }
    return 0;
}
/*
Saída:
01010101
10101010
01010101
10101010
01010101
10101010
01010101
10101010
*/
c

Array de strings

Um detalhe muito im­por­tante para o uso eficaz de arrays é o seguinte: um array é na verdade apenas um ponteiro para uma posição na memória e é in­ter­pre­tado como tal pelo com­pi­la­dor C. O índice usado para escrever ou ler campos in­di­vi­du­ais re­pre­senta, portanto, o des­lo­ca­mento ao longo do array em relação ao endereço base. O exemplo a seguir deve ilustrar isso:

int números2[5] = {1, 2, 3, 4, 5};
printf("%d\n", *números2);
// Saída: 1
printf("%d\n", *(números2 + 2));
// Saída: 3
c

Strings são tratadas da mesma forma em C. Portanto, é possível iterar sobre uma string como se fosse um array. Isso pode ser visto no exemplo a seguir, onde três frases ar­ma­ze­na­das em um array são exibidas caractere por caractere em maiús­cu­las. Para acessar os ca­rac­te­res, é utilizado o índice do array (colchetes):

#include <stdio.h>
int main() {
     char* frases[3];
    frases[0] = "Olá, esta é a primeira frase.\n";
    frases[1] = "Esta é apenas a segunda frase.\n";
    frases[2] = "Agora são três.\n";
     printf("Frases originais:\n\n");
     for(int i = 0; i < 3; i++) {
          printf("%s", frases[i]);
     }
     printf("\nFrases alteradas:\n\n");
     for(int i = 0; i < 3; i++) {
          int j = 0;
          while(frases[i][j] != '\n') {
                if(frases[i][j] >= 'a' && frases[i][j] <= 'z') {
                     printf("%c", frases[i][j] - 0x20);
                } else {
                     printf("%c", frases[i][j]);
                }
                j++;
          }
          printf("\n");
     }
}
/*
Saída:
Frases originais:
Olá, esta é a primeira frase.
Esta é apenas a segunda frase.
E agora são três.
Frases alteradas:
OLÁ, ESTA É A PRIMEIRA FRASE.
ESTA É APENAS A SEGUNDA FRASE.
E AGORA SÃO TRÊS.
*/
c
Ir para o menu principal