Funções, arrays e texto

Contratos, passagem de argumentos, arrays C, estruturas, strings e leitura de linhas.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Que passagem escolho?

Preciso deDeclara
Ler um número pequenoint n
Alterar o originalT& objeto
Consultar sem copiarconst T& objeto
Endereço que pode faltarT* objeto

return devolve e termina. Não imprime. Declara antes de chamar.

void copia(int x) { ++x; }      // n = 4 continua 4
void original(int& x) { ++x; }  // n = 4 passa a 5
  • int& r = a; r = b; copia b para a. A referência não muda de destino.
  • const T& não congela o objeto. Outro acesso pode alterá-lo.
  • Devolver endereço de local deixa acesso pendente.
  • Sobrecargas distinguem-se pelos parâmetros. O retorno sozinho não chega.

Arrays e índices

  • int v[4] tem índices 0 a 3. Não cresce.
  • Em parâmetro, const int v[] vira const int* v. Passa o tamanho à parte.
  • sizeof(v) dentro da função mede o apontador.
  • Com n == 0, não desreferencies o início.
// {4, -2, 7, 1}: soma(v, 4) = 10; soma(v + 1, 2) = 5; soma(nullptr, 0) = 0
// Mantém n dentro do array e a soma representável em int.
int soma(const int* valores, std::size_t n) {
    int total = 0;
    for (std::size_t i = 0; i < n; ++i) total += valores[i];
    return total;
}

Para descer com size_t, que não representa negativos, decrementa primeiro e lê v[i]:

for (std::size_t i = n; i > 0; ) {
    --i;
    std::cout << v[i] << '\n';
}

Com n = 3, i visita 2, 1, 0. Com n = 0, o corpo não corre. Em alternativa, lê v[i - 1] e só depois decrementa. i >= 0 é sempre verdade num tipo sem sinal, por isso não serve como condição de paragem.

PercursoEfeito
for (int x : v)Copia cada elemento
for (int& x : v)Altera o elemento
Apontador isoladoSem tamanho para este percurso

int matriz[2][3] precisa da dimensão interior no parâmetro. Não equivale a int**.

Saída num array do chamador: capacidade é espaço reservado, prefixo válido é o que a função devolveu. Em 4,9,4,2,9,7, conservar repetidos dá 4,9,4,9. Custo quadrático, memória constante além do destino.

Filtro de ocorrências repetidas.

Texto e recursão

  • string::size() conta unidades char. at(i) verifica limites.
  • find devolve a posição ou npos. Numa variável std::string par com "azul,verde", par.find(',') dá 4.
  • Depois de >> número, descarta o fim dessa linha antes de getline.
  • String C "Ana" ocupa 4 posições com \0. == entre arrays compara endereços.

Diferença simétrica de letras, alfabeto a a z:

  1. Marca presença em cada texto, sem distinguir maiúscula.
  2. Ignora o resto dos caracteres.
  3. Escreve por ordem alfabética as letras presentes em exatamente um texto.
  4. Destino com 27 posições, terminado com \0. O número devolvido exclui o terminador.

Recursão: caso base mais medida que diminui. soma(0) = 0, soma(n) = n + soma(n - 1) para n > 0. Entrada negativa nunca chega à base.

Leitura de número e linha. Conjuntos de letras.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.