Array

Diogo Silva

Academia da Força Aérea

Extra

Erros comuns

  • Aceder a posições inexistentes do array
  • C permite mas o comportamento não está definido.
int vec[20];
vec[25] = 4;

VLA - o que são?

  • Variable Length Arrays (VLA)
  • Disponíveis apenas para compiladores >C99
  • Permitem criar arrays cujo tamanho é definido durante a execução do programa
  • Estes arrays não podem ser globais.
  • Aplicável a arrays multi-dimensionais.

VLA - exemplo 1

unsigned int n;
printf("tamanho do vector:");
scanf("%u", &n);
int posicoes[n];

VLA - exemplo 2 - multi-dimensional

unsigned int rows, cols;
printf("linhas e colunas da matriz:");
scanf("%u%u", &rows, &cols);
int matrix[rows][cols];

VLA e funções

int func(int n, int vec[n]){
   //...
}

VLA multi-dimensional e funções

int func(int rows, int cols, int mat[rows][cols]){
   //...
}

Desta forma, deixa de ser necessário especificar o tamanho concreto das últimas N-1 dimensões.