1-D arrays: store, index, and traverse · Arrays 1-D: armazenar, indexar e percorrer
A row of boxes
- An array is a row of variables of the same type, kept side by side in memory.
int a[5];makes room for fiveints. They are one block, reached by number.- You can fill them when you create them:
int a[] = {10, 20, 30};makes an array of three.
Uma fileira de caixas
- Uma array é uma fileira de variáveis do mesmo tipo, mantidas lado a lado na memória.
int a[5];reserva espaço para cincoints. Elas são um bloco, acessadas por número.- Você pode preenchê-los ao criá-los:
int a[] = {10, 20, 30};cria um array de três elementos.
Indexing from 0
- Each item has an index (a position). The first index is
0, not1. a[0]is the first item,a[1]the second, anda[n - 1]is the last in an array ofnitems.- Reading or writing outside the array (like
a[5]in a 5-item array) is a serious bug.
Indexação começando em 0
- Cada item tem um índice (uma posição). O primeiro índice é
0, não1. a[0]é o primeiro item,a[1]o segundo, ea[n - 1]é o último em uma array denitens.- Ler ou escrever fora da array (como
a[5]em uma array de 5 itens) é um bug sério.
Traversing with a loop
- To visit every item, run an index from
0up ton - 1with aforloop. - Inside the loop, use
a[i]to read or change the item at positioni. - This is how you sum, count, or search an array.
Percorrendo com um loop
- Para visitar cada item, execute um índice de
0atén - 1com um loopfor. - Dentro do loop, use
a[i]para ler ou alterar o item na posiçãoi. - É assim que você soma, conta ou busca em uma array.
Arrays don't know their own length
- An array does not carry its own size. A function cannot ask "how long are you?".
- So you always pass the length next to the array:
sum(a, n). - Use
const int a[]in a parameter to promise you will only read the array, not change it.
Arrays não sabem seu próprio tamanho
- Uma array não carrega seu próprio tamanho. Uma função não pode perguntar "quantos você tem?"
- Então você sempre passa o comprimento ao lado da array:
sum(a, n). - Use
const int a[]em um parâmetro para prometer que você só lerá a array, não a alterará.
#include <stdio.h>
int main(void) {
int a[] = {10, 20, 30, 40};
int n = 4, total = 0;
for (int i = 0; i < n; i++) {
total += a[i];
}
printf("%d\n", total); // 100
return 0;
}
Common mistakes
- C does NOT check array bounds:
a[n]in a size-narray is undefined. - Valid indexes run
0ton - 1.
Erros comuns
- C NÃO verifica limites de array:
a[n]em uma array de tamanhoné indefinido. - Índices válidos vão de
0an - 1.
Now you try
- Pass both the array and its length
n, and loop the index from0ton - 1. - For the function tasks, do not write a
main— the checker provides one.
Agora você tenta
- Passe tanto a array quanto seu comprimento
n, e itere o índice de0an - 1. - Para as tarefas de função, não escreva um
main— o verificador fornece um.
Arrays are indexed · Arrays são indexados
An array stores values in order; reach one with a[i]. · Um array armazena valores em ordem; acesse um com a[i].
The array a and its length n are given. In main, add up all n items and print the total on its own line. · O array a e seu comprimento n são fornecidos. Em main, some todos os itens n e imprima o total em sua própria linha.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
Complete int sum(const int a[], int n) so it returns the total of the array's n items (0 when n is 0). Do not · não write a main. · Complete int sum(const int a[], int n) para que retorne o total dos itens do array n (0 quando n for 0). Não escreva um main.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
Complete void double_all(int a[], int n) so it doubles every item of the array, in place (no return value). Do not · não write a main. · Complete void double_all(int a[], int n) para dobrar cada item do array, in-place (sem valor de retorno). Não escreva um main.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.