Ponteiro para Ponteiro | Questões Resolvidas de Linguagem C

Ponteiro para Ponteiro | Questões Resolvidas de Linguagem C

·

3 min read

Entendendo o funcionamento de ponteiro para ponteiro

#include <stdio.h>

int main(){
    int v1[] = {5,1,7,9};
    int num1, num2;
    int *p1;
    scanf("%i", &num1);

    if(num1 == 1){
        p1 = &v1;
        p1++;

        num2 = *p1;
    } else if (num1 == 2){
        p1 = &v1[3];
        num2 = *p1;
    } else{
        p1 = &v1;
        num2 = *p1;
    }
    printf("%i", num2);

    return 0;
}

Vamos analisar o código passo a passo:

  1. Incluímos a biblioteca "stdio.h", que nos permite usar a função "scanf" e "printf".

  2. Iniciamos a função "main".

  3. Criamos um vetor chamado "v1" com os valores {5, 1, 7, 9}. É como uma caixa que guarda 4 números.

  4. Definimos duas variáveis inteiras chamadas "num1" e "num2". Elas serão usadas para armazenar números.

  5. Criamos um ponteiro chamado "p1". Um ponteiro é como um dedo que pode apontar para algo, nesse caso, ele vai apontar para um número.

  6. Usamos a função "scanf" para ler um número digitado pelo usuário e guardá-lo na variável "num1". É como perguntar para a criança qual número ela quer escolher.

  7. Iniciamos uma estrutura condicional "if". Se o número digitado for igual a 1, fazemos o que está dentro das chaves a seguir.

    1. Fazemos o ponteiro "p1" apontar para o segundo número do vetor "v1". É como se o dedo estivesse apontando para o número 1.

    2. Movemos o ponteiro "p1" para o próximo número do vetor. Agora o dedo está apontando para o número 7.

    3. Atribuímos o valor do número apontado pelo ponteiro "p1" à variável "num2". Ou seja, guardamos o valor 7 na variável "num2".

  8. Se o número digitado não for igual a 1, vamos para o próximo "else if" e verificamos se é igual a 2.

    1. Se o número digitado for igual a 2, fazemos o que está dentro das chaves a seguir.

    2. Fazemos o ponteiro "p1" apontar para o último número do vetor "v1". O dedo está apontando para o número 9.

    3. Atribuímos o valor do número apontado pelo ponteiro "p1" à variável "num2". Agora a variável "num2" guarda o valor 9.

  9. Se nenhuma das condições anteriores for verdadeira, executamos o bloco de código dentro do "else".

    1. Fazemos o ponteiro "p1" apontar para o primeiro número do vetor "v1". O dedo está apontando para o número 5.

    2. Atribuímos o valor do número apontado pelo ponteiro "p1" à variável "num2". Agora a variável "num2" guarda o valor 5.

    3. Usamos a função "printf" para exibir o valor da variável "num2". É como mostrar para a criança qual número foi escolhido.

  10. Retornamos 0 para indicar que o programa foi executado corretamente.

Espero que isso tenha sido útil! Se tiver mais dúvidas, é só perguntar.

http://www3.decom.ufop.br/toffolo/site_media/uploads/2018-2/bcc201/exercicios/Lista8_ponteiros.pdf

https://www.inf.pucrs.br/~pinho/PRGSWB/Exercicios/AlocacaoDinamica/Exercicio-AlocacaoDinamica.html