Ir ao conteúdo

- C / Ponteiros


Folcks

Posts recomendados

Postado

Fala pessoal, tudo certo?

 

Seguinte, eu sei que o meu código parece ser estranho, mas a mecânica dele faz parte de um código maior, e, para simplificar, eu escrevi um programa resumido que tenha a mesma essência.

Sendo assim, por que esse meu programa não está dando certo? O intuito dele é de que o usuário forneça um número X entre [1,99], e o programa retorne o valor 100-X, porém o valor obtido na Terceira Função não consegue chegar na Função Main (apenas chega na Segunda Função).

 

Link do código:  http://codepad.org/MvFm2w55

 

 

Obrigado

Postado

@Folcks

 

Veja se é isso:

#include <stdio.h>void SegundaFuncao(int *valor);void TerceiraFuncao(int **valor);int main(){    int valor = 100, informado, i;        /* Leitura do valor informado pelo usuario */    scanf("%d", &informado);        for (i = 0; i < informado; i++){        SegundaFuncao(&valor);        printf("Retornou da SegundaFuncao: %d\n", valor);    }        return 0;}void SegundaFuncao(int *valor){    if (*valor > 0)        TerceiraFuncao(&valor);        printf("Retornou da TerceiraFuncao: %d\n", *valor);    }void TerceiraFuncao(int **valor){    **valor -= 1;}

Tem que fazer ponteiro de ponteiro..

 

 

[ ]'s

Postado

A segunda função está passando uma cópia da variável.

veja o endereço original de valor, antes do loop

printf("Endereco = %x\n", &valor);
E compare com o endereço dentro de SegundaFuncao
Postado

@Folcks

 

Veja se é isso:

#include <stdio.h>void SegundaFuncao(int *valor);void TerceiraFuncao(int **valor);int main(){    int valor = 100, informado, i;        /* Leitura do valor informado pelo usuario */    scanf("%d", &informado);        for (i = 0; i < informado; i++){        SegundaFuncao(&valor);        printf("Retornou da SegundaFuncao: %d\n", valor);    }        return 0;}void SegundaFuncao(int *valor){    if (*valor > 0)        TerceiraFuncao(&valor);        printf("Retornou da TerceiraFuncao: %d\n", *valor);    }void TerceiraFuncao(int **valor){    **valor -= 1;}

Tem que fazer ponteiro de ponteiro..

 

 

[ ]'s

 

 

É isso mesmo, obrigado pela atenção, LNW e olliver.soul !

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...