suzy Posted May 1, 2008 at 09:07 PM Report Share #182903 Posted May 1, 2008 at 09:07 PM :)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?? ? como faço isto?? obrigada Link to comment Share on other sites More sharing options...
mota77 Posted May 1, 2008 at 09:23 PM Report Share #182909 Posted May 1, 2008 at 09:23 PM sim é possivel mas de dois tipos iguais se nao estou em erro mas podes retornar o endereço da struct Link to comment Share on other sites More sharing options...
falk0n Posted May 1, 2008 at 10:23 PM Report Share #182925 Posted May 1, 2008 at 10:23 PM 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 Link to comment Share on other sites More sharing options...
pedrotuga Posted May 1, 2008 at 10:28 PM Report Share #182929 Posted May 1, 2008 at 10:28 PM devolve um ponteiro para um array ou uma struct Link to comment Share on other sites More sharing options...
TheDark Posted May 1, 2008 at 10:56 PM Report Share #182945 Posted May 1, 2008 at 10:56 PM 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; } Desaparecido. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now