#include <stdio.h>
int main() {
int idade[3];
idade[0] = 18;
idade[1] = 20;
idade[2] = 25;
printf("%d\n", idade[0]);
printf("%d\n", idade[1]);
printf("%d\n", idade[2]);
return 0;
}
Crie um programa que:
Inicialização Direta:
int valores[5] = {1, 2, 3, 4, 5};
Inicialização Parcial:
int numeros[5] = {10, 20};
Na inicialização parcial acima os demais valores são considerados zero:
10 20 0 0 0
int numeros[4] = {10, 20, 30, 40}; // Tamanho 4. Índices de 0 a 3.
printf("Primeiro elemento (Índice 0): %d\n", numeros[0]); // Imprime 10
printf("Último elemento (Índice 3): %d\n", numeros[3]); // Imprime 40
// ATENÇÃO!
// printf("%d", numeros[4]); // ERRO: Índice fora dos limites (Out-of-Bounds)
Atenção: Nunca acesse um índice que exceda o tamanho declarado do array. Isso leva a Comportamento Indefinido (Undefined Behavior), corrompendo a memória e causando falhas imprevisíveis.
int x[] = {1, 2, 3};
O compilador calcula automaticamente o tamanho.
O compilador ele executa uma contagem estática dos valores literais fornecidos e ajusta o metadata do array para garantir que o bloco de memória seja grande o suficiente (e somente o necessário).
A maneira mais segura de processar todos os elementos é usando laços de repetição (for ou while).
#include <stdio.h>
#define TAMANHO 5
int main() {
int numeros[TAMANHO] = {10, 20, 30, 40, 50};
for(int i = 0; i < TAMANHO; i++) {
printf("%d\n", numeros[i]);
}
return 0;
}
Dica: Usar constantes (
#defineouconst int) para definir o tamanho do array é uma prática essencial para evitar "números mágicos" (magic numbers).
Modifique o programa abaixo para exibir os elementos do array ordem reversa:
#include <stdio.h>
#define TAMANHO 5
int main() {
int numeros[TAMANHO] = {10, 20, 30, 40, 50};
for(int i = 0; i < TAMANHO; i++) {
printf("%d\n", numeros[i]);
}
return 0;
}
#include <stdio.h>
int main() {
int notas[4];
for(int i = 0; i < 4; i++) {
printf("Digite a nota: ");
scanf("%d", ¬as[i]);
}
return 0;
}
Crie um programa que:
int: 4 bytesdouble: 8 bytesFonte da imagem: openframeworks.cc
Fonte da imagem: openframeworks.cc
sizeof#include <stdio.h>
int main() {
int numeros[5];
printf("%lu", sizeof(numeros));
return 0;
}
Se int ocupa 4 bytes:
5 x 4 = 20 bytes
int v[3];
v[3] = 10;
Índices válidos:
0, 1, 2
Consequências:
#include <stdio.h>
int main() {
int numeros[5] = {10, 20, 30, 40, 50};
int busca = 30;
for(int i = 0; i < 5; i++) {
if(numeros[i] == busca) {
printf("Encontrado!");
}
}
return 0;
}
#include <stdio.h>
int main() {
int numeros[5] = {3, 7, 2, 9, 1};
int maior = numeros[0];
for(int i = 1; i < 5; i++) {
if(numeros[i] > maior) {
maior = numeros[i];
}
}
printf("Maior = %d", maior);
return 0;
}
Arrays são fundamentais na programação em C porque:
Próximos Tópicos: Matrizes e Strings em C
Dúvidas e Discussão
Um array float temperaturas[7] foi declarado. Se um programador tenta acessar o elemento na posição temperaturas[8], qual é a consequência mais provável, do ponto de vista da segurança em C?
A) O programa irá compilar com erro e não rodará.
B) O compilador emitirá um aviso (warning), mas o programa funcionará corretamente.
C) O programa tentará ler/escrever fora dos limites alocados, resultando em Comportamento Indefinido (Undefined Behavior).
D) O sistema operacional irá travar imediatamente.
Qual é o erro no código abaixo?
int v[5];
v[5] = 10;
Crie um programa que:
Crie um programa que:
Gabarito: C
Resposta: * Índice inválido * O último índice válido é 4