Entendendo Ponteiros e Funções em C
Enviado: 30 Out 2024, 20:05
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.
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.
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:
3. Função main
No main, declaramos duas variáveis inteiras, valor1 e valor2, e inicializamos com os valores 5 e 3, respectivamente.
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:
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.
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:
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.
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;
}
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;
}
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;
}
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;
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);
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
Código: Selecionar todos
printf("Valor 1: %d, Valor 2: %d\n", valor1, valor2);
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.