Recapitulação: Ponteiros como Argumentos
Parte da seção Logic & Flow do Journey de C da Coddy — lição 30 de 63.
Desafio
FácilEscreva um programa em C que implemente uma função para encontrar os valores mínimo e máximo em um array usando argumentos de ponteiro. Seu programa deve:
- Criar uma função chamada
findMinMaxque recebe quatro parâmetros:- Um array de inteiros
- O tamanho do array
- Um ponteiro para um inteiro para armazenar o valor mínimo
- Um ponteiro para um inteiro para armazenar o valor máximo
- Dentro da função
findMinMax, iterar pelo array para encontrar os valores mínimo e máximo - Usar o operador de desreferência para armazenar o valor mínimo no endereço apontado pelo ponteiro min
- Usar o operador de desreferência para armazenar o valor máximo no endereço apontado pelo ponteiro max
- Na função
main, ler um inteironrepresentando o número de elementos no array - Ler
nvalores inteiros e armazená-los em um array - Declarar duas variáveis inteiras
minValueemaxValuepara armazenar os resultados - Chamar a função
findMinMax, passando o array, seu tamanho e os endereços deminValueemaxValue - Imprimir os resultados no formato:
Minimum: [value]eMaximum: [value]
Por exemplo, se a entrada for:
5
12 7 23 4 18Sua saída deve ser:
Minimum: 4
Maximum: 23Este desafio demonstra a técnica poderosa de usar múltiplos argumentos de ponteiro para retornar múltiplos valores de uma única chamada de função, permitindo que a função modifique variáveis no escopo da função que a chamou.
Experimente você mesmo
#include <stdio.h>
// TODO: Escreva sua função findMinMax aqui
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int minValue, maxValue;
// TODO: Chame a função findMinMax aqui
printf("Minimum: %d\n", minValue);
printf("Maximum: %d\n", maxValue);
return 0;
}Todas as lições de Logic & Flow
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um Contato