Tenho uma dúvida, não sei se alguém vai conseguir me ajudar.
Eu tenho um ponteiro por referência. Daí eu criei uma função que deve
retornar esse ponteiro. Como eu faço para declarar o tipo de retorno
desse ponteiro na função? Eu fiz assim, mas não funcionou:
/**Declaro meu ponteiro**/
struct minha_estrutura **ponteiro;
/**Crio minha função e especifico o tipo de retorno: será que está certo?**/
struct minha_estrutura funcao(){
/**Corpo do Código**/
/**Meu retorno. Está certo?**/
return ponteiro;
}
Considere que:
struct minha_estrutura = nome da minha estrutura.
**ponteiro = meu ponteiro por referência (ponteiro que aponta para uma tabela de ponteiros)
return ponteiro = o mesmo ponteiro que eu mencionei acima.
Então pessoal, eu estou com esse pequeno empecilho para retornar
um ponteiro por referência de um tipo estrutura. Se alguém puder me
ajudar, agradeço.
Encontrei a solução no livro do Herbert Schildt. Estava fazendo tudo certo, mas
só faltava um detalhe: um asterisco antes do nome da função.
Toda função que retorna uma struct é um ponteiro pra um resultado
de um ponteiro por referência :?
A declaração correta da função seria:
struct minha_estrutura *funcao(){
/**Corpo do meu código**/
return ponteiro;
}
É isso. Flw!
Você está confundindo Java com C.
Em C, até para não ficar com um monte de estrelas, ampersands e “structs” voando por aí, você normalmente faz:
/* Definição da estrutura em si */
struct minha_estrutura_s {
...
};
/* Defino dois sinônimos: minha_estrutura, que é um sinônimo para struct minha_estrutura,
* e p_minha_estrutura, que é um sinônimo para struct minha_estrutura_s *
*/
typedef struct minha_estrutura_s minha_estrutura, *p_minha_estrutura;
/* Definição de uma variável global do tipo minha_estrutura */
minha_estrutura me;
/* Definição de um método que retorna um ponteiro para uma struct minha_estrutura_s */
p_minha_estrutura funcao() {
p_minha_estrutura pme = &me;
return pme;
}