Problema com Ponteiros

te-x

Power Member
Olá, estou a fazer um trabalho e numa das funções que fiz tenho um argumento que é um ponteiro, que vai servir como argumento de saída.

A função é suposto carregar informação do disco, alocá-la em memória e a esse tal argumento de saída é atribuído o valor do endereço em que ficou a informação. Com uns prints espalhados pelo programa consegui ver que está tudo a funcionar bem, o valor é bem atribuido dentro da função mas cá fora o ponteiro fica com o valor 0. Não estou a conseguir perceber porque. Fica aqui o código que me parece relevante:

Código:
int main() {
    [...]


    DataType* pointer;


    if( (stat = func(n, pointer)) != 0)
        return stat;


    printf("%d", pointer); //---> imprime 0


    [...]
}


int func(int n, DataType* p) {
    
    [
        //Load data to memory
    ]


    p = &loadedMem;


    printf("%d", p); //imprime bem (134558752)


    return 0;
}
 
Última edição:
a funcao é suposto retornar um valor, 0 no caso de tudo correr bem. A p é atribuido o valor do endereço do que eu preciso de aceder fora da função. Ou pelo menos era o suposto.
 
Para acederes ao valor de p fora da função tens de fazer return do p. Se não declaras o p como sendo global e aí já consegues aceder a p fora da função e fazer return 0
 
O problema é quando chamas a função. Não estas a passar o endereço do apontador (&pointer) e utiliza %p em vez de %d para verificares o endereço que esta em p.
 
Já estou a ver. Obrigado ;)

Ficou assim no final:

Código:
int main() {
    [...]

    DataType* pointer;

    if( (stat = func(n, &pointer)) != 0)
        return stat;

    printf("%d", pointer); //---> imprime 0

    [...]
}

int func(int n, DataType** p) {
    
    [
        //Load data to memory
    ]

    *p = &loadedMem;

    return 0;
}
 
Back
Topo