🎯 Exemplo de Ponteiros em C
Em poucas palavras
Definição técnica ou simplificada do conceito.
📝 Notas e Desenvolvimento
🔗 Conexões e Contexto
- Atlas: MdC - Programação
- Notas Relacionadas:
📚 Referências e Fontes
Links Externos
Citações Diretas
📂 Outros Conteúdos Preservados
Declaração e Desreferenciação de um Ponteiro
Em C, um ponteiro é uma variável que armazena o endereço de memória de outra variável.
#include <stdio.h> // Inclui a biblioteca padrão de entrada e saída
int main(void) {
int n = 50; // Declara uma variável inteira 'n' e atribui o valor 50.
// Declara um ponteiro para um inteiro.
// 'int *p' significa que 'p' é um ponteiro que aponta para um valor do tipo 'int'.
// '&n' é o operador "endereço de", que retorna o endereço de memória da variável 'n'.
int *p = &n;
// Imprime o valor para o qual o ponteiro 'p' aponta.
// '*p' é o operador "desreferência", que acessa o valor armazenado no endereço para o qual 'p' aponta.
printf("O valor de n (acessado via ponteiro): %i\n", *p); // Saída: O valor de n (acessado via ponteiro): 50
// Imprime o endereço de memória da variável 'n'.
printf("O endereço de memória de n: %p\n", &n); // Saída: (um endereço hexadecimal, ex: 0x7ffee5f01234)
// Imprime o valor do ponteiro 'p', que é o endereço de memória de 'n'.
printf("O valor do ponteiro p (o endereço de n): %p\n", p); // Saída: (o mesmo endereço hexadecimal de n)
}Alterando o Valor Através de um Ponteiro
É possível modificar o valor da variável original usando o ponteiro que aponta para ela.
#include <stdio.h>
int main(void) {
int x = 10;
int *ptr_x = &x; // ptr_x aponta para o endereço de x
printf("Valor original de x: %i\n", x); // Saída: 10
*ptr_x = 20; // Altera o valor no endereço para o qual ptr_x aponta (ou seja, altera x)
printf("Novo valor de x (via ponteiro): %i\n", x); // Saída: 20
printf("Novo valor de x (acessado via ponteiro): %i\n", *ptr_x); // Saída: 20
}Ponteiros e Arrays
Em C, o nome de um array pode ser tratado como um ponteiro para o seu primeiro elemento. Isso é fundamental para entender a Aritmética de ponteiros.
#include <stdio.h>
int main(void) {
int arr[] = {10, 20, 30};
int *ptr_arr = arr; // ptr_arr aponta para o primeiro elemento de arr (arr[0])
printf("Primeiro elemento: %i\n", *ptr_arr); // Saída: 10
printf("Segundo elemento (usando aritmética de ponteiros): %i\n", *(ptr_arr + 1)); // Saída: 20
printf("Terceiro elemento (usando aritmética de ponteiros): %i\n", *(ptr_arr + 2)); // Saída: 30
}Usos Comuns de Ponteiros em C
- Passagem por Referência: Permite que funções modifiquem variáveis passadas como argumentos.
- Alocação Dinâmica de Memória: Usado com funções como
malloc(),calloc(),realloc()efree()para gerenciar memória na heap. - Estruturas de Dados: Essencial para implementar estruturas como listas encadeadas, árvores e grafos.
- Manipulação de Strings: Strings em C são arrays de caracteres terminados em nulo, frequentemente manipulados com ponteiros.