Entendendo Ponteiros e Funções em C

Explore e compartilhe códigos em C! Amplie suas habilidades em programação e segurança da informação.
Avatar do usuário
bernardino
Site Admin
Mensagens: 798
Registrado em: 28 Ago 2020, 15:11

Entendendo Ponteiros e Funções em C

Mensagem por bernardino »

Neste artigo, vamos explorar um exercício simples em C que utiliza funções e ponteiros para manipular valores. O código a seguir demonstra como usar funções para realizar operações e modificar variáveis diretamente na memória.

Código: Selecionar todos

#include <stdio.h>

int soma(int a, int b) {
    return a + b;
}

// FUNÇÃO QUE MODIFICA OS VALORES USANDO PONTEIROS
void modificaValor(int *valor1, int *valor2) {
    *valor1 = 10;
    *valor2 = 20;
}

int main() {
    int valor1 = 5;
    int valor2 = 3;
    
    int resultado = soma(5, 2); // CHAMADA DA FUNÇÃO
    printf("Resultado: %d\n", resultado);
    
    modificaValor(&valor1, &valor2); // Passa os endereços das variáveis
    printf("Valor 1: %d, Valor 2: %d\n", valor1, valor2); // Agora os valores foram alterados

    return 0;
}
Explicação do Código

1. Função soma
A primeira função, soma, recebe dois parâmetros inteiros a e b, e retorna a soma deles. Esta é uma função simples que demonstra a passagem de parâmetros por valor.

Código: Selecionar todos

int soma(int a, int b) {
    return a + b;
}
2. Função modificaValor
A função modificaValor recebe dois ponteiros para inteiros, valor1 e valor2. Ao usar ponteiros, podemos modificar os valores das variáveis que foram passadas para a função. Dentro da função, os valores apontados pelos ponteiros são alterados diretamente:

Código: Selecionar todos

void modificaValor(int *valor1, int *valor2) {
    *valor1 = 10;
    *valor2 = 20;
}
3. Função main
No main, declaramos duas variáveis inteiras, valor1 e valor2, e inicializamos com os valores 5 e 3, respectivamente.

Código: Selecionar todos

int valor1 = 5;
int valor2 = 3;
3.1 Chamada da função soma
Chamamos a função soma com os argumentos 5 e 2 e armazenamos o resultado na variável resultado. Em seguida, imprimimos o resultado:

Código: Selecionar todos

int resultado = soma(5, 2); // CHAMADA DA FUNÇÃO
printf("Resultado: %d\n", resultado);
3.2 Chamada da função modificaValor
A função modificaValor é chamada com os endereços de valor1 e valor2, usando o operador de endereço (&). Isso permite que a função altere os valores das variáveis originais.

Código: Selecionar todos

modificaValor(&valor1, &valor2); // Passa os endereços das variáveis
Após a execução da função, os valores de valor1 e valor2 são alterados para 10 e 20, respectivamente. Finalmente, imprimimos os novos valores:

Código: Selecionar todos

printf("Valor 1: %d, Valor 2: %d\n", valor1, valor2);
Conclusão
Este exercício ilustra conceitos fundamentais da linguagem C, como a passagem de parâmetros por valor e por referência (uso de ponteiros). Entender como funcionam os ponteiros é essencial para manipular dados de forma eficiente e realizar operações em funções sem copiar grandes estruturas de dados. A prática com esses conceitos ajudará a desenvolver habilidades mais avançadas em programação em C.
Algumas pessoas acham que foco significa dizer sim para a coisa em que você vai se focar.
Mas não é nada disso.
Significa dizer não às centenas de outras boas ideias que existem.
Você precisa selecionar cuidadosamente.”

Steve Jobs
Responder