Programação C: Passando Endereços e Ponteiros para Funções – Guia Prático
Programação C: Passando Endereços e Ponteiros para Funções
Domine como passar endereços de memória e ponteiros para funções em C, com exemplos claros e explicações especializadas.
Em C, passar um endereço em vez de um valor permite que uma função manipule diretamente a variável original. Essa técnica, chamada passagem por ponteiro, é essencial para código eficiente e para modificar dados através de escopos.
Exemplo 1: Trocando Dois Inteiros por Referência
#include <stdio.h> void swap(int *n1, int *n2); int main(void) { int num1 = 5, num2 = 10; /* Passar os endereços de num1 e num2 */ swap(&num1, &num2); printf("num1 = %d\n", num1); printf("num2 = %d", num2); return 0; } void swap(int *n1, int *n2) { int temp = *n1; *n1 = *n2; *n2 = temp; }
Executar este programa produz:
num1 = 10 num2 = 5
A função swap() recebe ponteiros n1 e n2 que apontam para as variáveis originais num1 e num2. Desreferenciando esses ponteiros (*n1 e *n2), a função troca os valores reais armazenados na memória, por isso main() vê os números atualizados. Observe que swap() retorna void porque modifica seus argumentos diretamente.
Exemplo 2: Incrementando um Valor via Ponteiro
#include <stdio.h> void addOne(int *ptr) { (*ptr)++; /* Incrementa o valor no endereço dado */ } int main(void) { int i = 10; int *p = &i; addOne(p); printf("%d", *p); /* Imprime 11 */ return 0; }
Aqui, p mantém o endereço de i. A função addOne() recebe esse mesmo endereço, desreferencia e incrementa o valor subjacente. Após a chamada, *p (e consequentemente i) reflete o novo valor de 11.
Estes exemplos ilustram o poder da passagem por ponteiro: funções podem alterar variáveis definidas fora de seu escopo, permitindo manipulação eficiente de dados sem cópia desnecessária.
Linguagem C
- Entendendo Palavras-chave e Identificadores em C#: Regras, Listas e Boas Práticas
- Dominando Operadores Bitwise e Bit Shift em C#: Guia Abrangente
- Classes e Objetos em C#: Fundamentos para POO Robusta
- Dominando Classes e Métodos Abstratos em C#: Guia Prático
- Entendendo Classes e Métodos Parciais em C#
- Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
- Como Passar Arrays 1D e 2D para Funções em C – Um Guia Prático
- Dominando Ponteiros em C: Um Tutorial Prático e Guiado por Especialistas
- Entendendo a Relação Entre Arrays e Ponteiros em C
- Dominando Structs e Ponteiros em C: Guia Prático