• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

funcao que retorne dois valores e possivel?

5 mensagens neste tópico

:)viva.

estou aqui com uma pequena duvida.

tenho de fazer uma funcao que devera receber o nome do ficheiro e numero do jogo pretendio, retornano uma estrutura com a informacao relativa ao jogo e um inteiro com o numero total de jogos existentes no ficheiro.

mas uma funcao pode retornar 2 tipos de dados?? uma estrutura e um inteiro?? :shocking:

como faço isto??

obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim é possivel mas de dois tipos iguais se nao estou em erro

mas podes retornar o endereço da struct

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem poder talvez possas ...

vou divagar um pouco ... imagina ... retornares um apontador para uma posicao de memoria e sabes que nessa posicao de memoria ... existe qq coisa ... talvez se fizeres um cast para o tipo de dados que queres  consigas ... mas so por curiosidade ... nao seria mais facil retornares uma estrutura com essa estrutura e esse inteiro dentro ... ?

boas programacoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

devolve um ponteiro para um array ou uma struct

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se receberes um apontador para apontador para o tipo da struct que queres retornar, podes colocá-lo a apontar para a struct que criares dentro da função, e depois retornas só o inteiro.

int funcao(char *nomefich, int numjogo, infojogo **info) {
infojogo *ij = (infojogo*)malloc(...);
/*(...)*/
*info = ij;
return njogos;
}

int main() {
infojogo *info;
int numjogos;
/*(...)*/
numjogos = funcao("jogo.txt", 2, &info);

return 0;
}

Outra hipótese é alocares espaço para a struct antes de chamares a função, e passares como parâmetro o endereço da struct, continuando a retornar só o inteiro.

int funcao(char *nomefich, int numjogo, infojogo *info) { ... }

int main() {
infojogo info;
int numjogos;
/*(...)*/
numjogos = funcao("jogo.txt", 2, &info);

return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora