Ponteiros na linguagem C

Na linguagem C, um ponteiro é uma variável que armazena um endereço de memória, que por sua vez pode conter um valor. Os ponteiros são usados para acessar dados armazenados na memória de um programa e também são usados para alocar dinamicamente a memória durante a execução do programa.

A declaração de um ponteiro em C usa o operador “*” para indicar que a variável é um ponteiro. Exemplo, a declaração “int *p” declara uma variável chamada “p” que é um ponteiro para um valor inteiro.

Para atribuir um valor a um ponteiro em C, você pode usar o operador “&” para obter o endereço de memória de outra variável. Por exemplo, se você tem uma variável “x” do tipo inteiro, você pode atribuir o endereço de memória de “x” a um ponteiro “p” com a instrução “p = &x;”.

Para acessar o valor armazenado em um endereço de memória apontado por um ponteiro em C, você pode usar o operador “*” novamente. Exemplo, se você tem um ponteiro “p” apontando para um valor inteiro, você pode obter o valor desse endereço de memória usando a instrução “int y = *p;”.

Os ponteiros também são usados para alocar dinamicamente a memória em C, permitindo que o programa aloque e libere a memória conforme necessário durante a execução. Isso é feito usando as funções “malloc”, “calloc” e “realloc” para alocar a memória e a função “free” para liberá-la quando ela não é mais necessária.

void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5;
int y = 10;
printf("Antes da troca: x = %d, y = %d\n", x, y);
swap(&x, &y);
printf("Depois da troca: x = %d, y = %d\n", x, y);
return 0;
}

Neste exemplo, a função swap recebe dois ponteiros para inteiros como argumentos, que são usados para acessar os valores das variáveis a e b. Os valores dessas variáveis são trocados usando o método tradicional de troca de valores em variáveis temporárias. Em seguida, a função main chama swap passando os endereços de x e y como argumentos. Isso permite que a função swap acesse e troque os valores de x e y. Finalmente, a função main imprime os novos valores de x e y.

A saída deste programa será:

Antes da troca: x = 5, y = 10
Depois da troca: x = 10, y = 5

Observe que a função swap não retorna nenhum valor. Em vez disso, ela usa ponteiros para acessar e modificar os valores das variáveis a e b.

Resolva os exercícios da atividade proposta e cole os resultados no comentário.

Fonte: Pexels.

8 comentários em “Ponteiros na linguagem C

  1. EX_10

    a)      vet for declarado como char?
    Vet+1= 4093
    vet+2= 4094
    vet+3= 4095
    b)      vet for declarado como int?
    Vet+1= 4094
    vet+2= 4096
    vet+3= 4098
    c)      vet for declarado como float?
    Vet+1= 4096
    vet+2= 4100
    vet+3= 4104
    d)      vet for declarado como double?
    Vet+1= 4100
    vet+2= 4108
    vet+3= 4116

    Curtir

  2. Exercício 2 da lista 10 de ponteiros

    #include <stdio.h>

    int main() {

    int V1, V2;
    int *pt1;
    int *pt2;
    
    printf("Insira o primeiro Numero:\n");
    scanf("%i",&V1);
    
    printf("\nInsira o segundo Numero:\n");
    scanf("%i", &V2);
    
    pt1 = &V1;
    pt2 = &V2;
    
    int soma = *pt1 + *pt2;
    
    printf("A soma dos numeros %d e %d deu: %d",*pt1, *pt2, soma);
    
    return 0;
    

    }

    Curtir

  3. //1. Escreva um programa que declare uma variável inteira e um ponteiro para esta variável,
    //e em seguida atribua um valor à variável através do ponteiro. Comente o código com a explicação do exercício.
    #include <stdio.h>

    int main() {
    int numero; // Declaração da variável inteira
    int *ponteiro; // Declaração do ponteiro para a variável

    ponteiro = &numero; // Atribui ao ponteiro o endereço de memória da variável numero
    
    *ponteiro = 42;     // Atribui o valor 42 à variável numero através do ponteiro
    
    printf("O valor da variavel numero eh: %d\n", numero);
    
    return 0;
    

    }

    Curtir

  4. Ex 5 lista 9 (atividade 10)
    As saídas do programa:
    (a) 20
    (b) 29.0
    (c) U
    (d) R
    (e) U
    (f) R
    (g) P
    (h) 31
    (i) 45
    (j) 27
    (l) 31
    (m) 45
    (n) 27

    Curtir

  5. EX1_Lista10

    #include <stdio.h>

    int main() {
    int numero;
    int *ponteiro_numero;
    ponteiro_numero = &numero;
    *ponteiro_numero = 10;
    printf(“Valor da variável numero: %d\n”, numero);
    return 0;
    }

    Curtir

  6. O valor de x é: 20

    #include <stdio.h> // Inclui a biblioteca stdio.h, que contém as funções de entrada e saída, como printf.

    int main() { // Função principal do programa.
    int x = 10; // Declara uma variável inteira chamada x e atribui o valor 10 a ela.
    int *ptr = &x; // Declara um ponteiro para inteiro chamado ptr e atribui o endereço de memória da variável x a ele.

    *ptr = 20; // Altera o valor apontado pelo ponteiro ptr para 20.

    printf(“O novo valor de x é: %d\n”, x); // Imprime o novo valor da variável x na tela.

    return 0; // Retorna 0 para indicar que o programa foi concluído com sucesso.
    }

    Curtir

  7. Lista 10//ex1
    #include <stdio.h>
    int main() {
    int a;
    int p;
    p = &a;
    *p = 4;
    printf(“%d” , a);
    return 0;
    }
    Explicação: no código criou-se a variável “a” e o ponteiro “
    p” para “a”, em seguida, atribuiu-se ao valor de “p” o endereço de “a”, depois, atribuiu ao “*p” o valor 4. Assim, o código vai imprimir o valor 4.

    Curtir

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.