Ir ao conteúdo
  • Cadastre-se

função return em c como funciona?


jamantah

Posts recomendados

Toda função em C precisa retornar algum valor para o compilador, à exceção de alguma função declarada para retornar algo do tipo void, como exemplificado abaixo:


void funcao_1 ()

A função principal de qualquer programa main() SEMPRE retorna um valor do tipo inteiro (int). Portanto você deve declará-la como segue:


int main ()

Se, no caso da função main você não colocar o int, o compilador automaticamente retornará um valor do tipo int.

Pois bem, já que toda função deve retornar algum valor ao compilador, você então deve colocar, ao final do bloco de comandos pretendido, o comando return, seguido do quê você quer que seja retornado. Por exemplo, suponhamos que eu declare uma função para calcular o quadrado de um número. Então eu deveria fazê-la assim:


int funcao_quadrado ()
{
int num;
printf ("Informe o numero desejado.");
scanf ("%d", &num);

return num*num;
}

Repare esse simples código. O programa pede para você informar um número, usando a função printf. O número digitado pelo teclado é lido pela função scanf. Logo em seguida, a função retorna o quadrado do número digitado, ou seja, num*num. Agora colocando essa função dentro de uma main ficaria assim:


int main ()
{
int resultado;
resultado = funcao_quadrado;

printf ("O quadrado do numero digitado é: %d", resultado);

return 0;
}

Repare que a função principal main() chamará a função para o cálculo do quadrado do número, no caso funcao_quadrado(). Esta por sua vez se encarrega de solicitar o número, calcular o procedimento desejado e retornar à função main() o resultado de seu processamento. Esse resultado é passado à variável resultado, que é exibida na tela. Repare também que ao final da função main() foi colocado um return 0. Isso serve para informar ao compilador que ocorreu tudo certo com a função main(). Se main retornasse um outro valor diferente de 0 haveria um problema em sua execução, que seria informada ao compilador.Abraço.

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

você explicou muito bem dessa forma ai, explicou melhor do que qualquer livro que eu ja li... huauhauhauh

e no caso do void, como fuciona? qual a diferença? precisa de return no final da função?

Qual o livro que o jamantah usa na faculdade para estudar C?

Link para o comentário
Compartilhar em outros sites

você explicou muito bem dessa forma ai, explicou melhor do que qualquer livro que eu ja li... huauhauhauh

e no caso do void, como fuciona? qual a diferença? precisa de return no final da função?

Qual o livro que o jamantah usa na faculdade para estudar C?

O tipo void é um tanto diferente dos demais. Grosseiramente falando, uma função declarada da seguinte forma


void funcao ()

terá uma espécie de "retorno vazio". Na verdade ela retornará algo ao compilador (se não acontecesse isso o compilador não saberia que a função foi chamada e que funcionou), porém esse retorno não é um valor "aproveitável", digamos assim.

O tipo void é também chamado de "tipo genérico", ou seja, é como se ele fosse "adaptável" para ser modificado. Por exemplo, eu posso declarar uma variável do tipo void,


void variavel;

e usar essa variável para armazenar um valor de qualquer outro tipo que eu quiser. Isso é realmente muito interessante, pois, como provavelmente você irá estudar mais a frente, existem funções genéricas que precisam retornar tipos diferentes em chamadas distintas.

No exemplo de função com retorno void apresentada acima, essa função poderá, sem nenhum problema, retornar um tipo int, char, float ou double, utilizando algumas técnicas específicas. A esse tipo de função chamamos de "função call back". Por outro lado, se eu declarasse a função referida da seguinte maneira:


int funcao ()
{
. char c;
.
.
return c;
}

o compilador dará uma mensagem de erro, pois você declarou uma função do tipo int mas retornou algo do tipo char. As funções call back resolvem esse problema, utilizando o poderoso tipo void.

Mas se você não estiver utilizando uma função call back, não há necessidade de se colocar o return numa função declarada como void. Na maioria das vezes utilizamos funções void para exibir mensagens na tela, modificar variáveis globais ou modificar variáveis que sejam passadas como parâmetros de cópia ou referência, mas aí já é outra história...;)

Recomendo as seguintes apostilas:

http://www.inf.ufes.br/~pet/monitorias/pd2/arquivos/Gerais/CursoC.pdf (a melhor de todas)

http://www.inf.ufes.br/~pet/monitorias/pd2/arquivos/Gerais/UFES-apostila.pdf

Abraço.

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • 9 anos depois...

@RooT A apostila recomendada não existe mais no link. Teria alguma outra a recomendar? Obrigada e parabéns pelas respostas precisas.

Em 02/06/2009 às 23:52, RooT disse:

Toda função em C precisa retornar algum valor para o compilador, à exceção de alguma função declarada para retornar algo do tipo void, como exemplificado abaixo:

 

 

void funcao_1 ()

 

A função principal de qualquer programa main() SEMPRE retorna um valor do tipo inteiro (int). Portanto você deve declará-la como segue:

 

 

int main ()

 

Se, no caso da função main você não colocar o int, o compilador automaticamente retornará um valor do tipo int.

Pois bem, já que toda função deve retornar algum valor ao compilador, você então deve colocar, ao final do bloco de comandos pretendido, o comando return, seguido do quê você quer que seja retornado. Por exemplo, suponhamos que eu declare uma função para calcular o quadrado de um número. Então eu deveria fazê-la assim:

 

 

int funcao_quadrado ()
{
 int num;
 printf ("Informe o numero desejado.");
 scanf ("%d", &num);

 return num*num;
}

 

Repare esse simples código. O programa pede para você informar um número, usando a função printf. O número digitado pelo teclado é lido pela função scanf. Logo em seguida, a função retorna o quadrado do número digitado, ou seja, num*num. Agora colocando essa função dentro de uma main ficaria assim:

 

 

int main ()
{
 int resultado;
 resultado = funcao_quadrado;

printf ("O quadrado do numero digitado é: %d", resultado);

 return 0;
}

 

Repare que a função principal main() chamará a função para o cálculo do quadrado do número, no caso funcao_quadrado(). Esta por sua vez se encarrega de solicitar o número, calcular o procedimento desejado e retornar à função main() o resultado de seu processamento. Esse resultado é passado à variável resultado, que é exibida na tela. Repare também que ao final da função main() foi colocado um return 0. Isso serve para informar ao compilador que ocorreu tudo certo com a função main(). Se main retornasse um outro valor diferente de 0 haveria um problema em sua execução, que seria informada ao compilador.Abraço.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...