AnyCompiler

Arrays

Um array C tem um tamanho fixo definido na criação sem nenhuma forma embutida de crescer, e — diferente de todas as outras linguagens deste site — não tem uma propriedade length própria. sizeof(array) / sizeof(array[0]) é o truque padrão para recuperar a contagem de elementos de um array, e só funciona enquanto o array ainda está no scope como array (não depois que ele decai para um pointer, o que a próxima lição cobre).

#include <stdio.h>

int main() {
    int numbers[5] = {4, 8, 15, 16, 23};
    int sum = 0;
    for (int i = 0; i < 5; i++) {
        sum += numbers[i];
    }
    printf("%d\n", sum);
    printf("Array size: %zu\n", sizeof(numbers) / sizeof(numbers[0]));
    return 0;
}
Output
66
Array size: 5

C também não faz verificação de limites: ler ou escrever além do fim de um array não gera um erro — ele apenas lê ou corrompe qualquer memória que esteja ali. Isso é undefined behavior, e é uma das arestas mais afiadas do C.

A seguir: pointers — a única ideia sobre a qual o resto deste curso é construído.

Practice exercise

Dado int numbers[4] = {4, 8, 15, 16}, some todos os seus elementos com um for loop e imprima o total.