Jump to content

Recommended Posts

Posted

Olá de novo :-)

Estou aqui com uma duvida, que não estou a conseguir esclarecer através de pesquisa no google, então venho perguntar-vos a vocês, eheh  😉

Eu queria que numa função, a mesma retornasse vários valores, por exemplo:

(...)

int retorna(int x, int y, int z, int a){
x = x+y;
z = z+a;

return a z;
}

Isto é possivel de fazer? ou se não for alguém tem alguma sugestão de como o será possivel fazer?

Obrigado!

rick

Posted

Passas como parâmetro da função o endereço das variáveis que vão guardar os valores que queres devolver, e depois na função trabalhas com apontadores.

Com esta solução tens q ter em atenção q alteras o valor da variavel q passas como parametro, visto estares a passar o apontador.

Se for essa a intenção, então é o q deves fazer.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Posted

era mesmo isso, alterar o valor da variável, portanto se trabalhar apenas passando os endereços e alterando os valores dos mesmos, ainda que seja de ficheiros diferentes, ele assume sempre o valor que lhe atribuir, certo?

Obrigado pela ajuda 😉

Posted

Devolver estruturas de dados é uma das coisas que em C é feito 'manualmente' ao contrario de liguagens orientadas a objectos.

Pessoalmente não gosto de ver funções que são usadas para devolver valores sem uma instrução return. Acho deselegante na medida em que é muito menos óbvio mais tarde quando nós, ou alguem, lê o código.

Em C só é possível devolver tipos de dados básicos, pelo que quando é necessario devolver outro tipo de dados usa-se um ponteiro para um ponto bem identificado da estrutura em questão. Tipicamente é por exemplo o inicio de uma string, a raíz de uma árvore, o nó sentinela de uma lista, etc.

PS: alguem que esteja habituado a programar em C podia escrever uma página sobre isto no nosso wiki. É uma pergunta frequente.

Posted

Pedro,

Eu usei a sugestão de modificar directamente na variável através do acesso á sua localização de memória, para o que necessito é efectivamente o que faz mais sentido. Eu como estou habituado a linguagens orientadas a objecto, tipicamente retornaria os valores em causa, mas visto não ser possivel em C, de acordo com o que estou a programar é a forma que melhor se adequa.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.