[Powered by Google Translate] CHRIS GERBER: Uma função é uma série de passos dentro de um
programa maior, que normalmente é destinado a ser chamado
várias vezes e de vários outros locais em
o programa.
Ao criar uma função C, um dos requisitos é
especificar um tipo de valor de retorno.
O caso mais simples é uma situação em que o ligando
código não se preocupa com o resultado da função.
Este pode ser o caso quando estamos a impressão de dados para o
exibição do usuário, como com printf.
Neste caso, podemos declarar um valor de retorno
ser do tipo void.
Usando vazio simplesmente diz ao compilador que não
valor será devolvido.
Vamos ver o que isso parece.
>> Vamos dizer que temos uma função chamada say_hello que
tem um argumento.
Nós vamos passar o nome da pessoa e ele irá exibir uma saudação
no ecrã.
O nome será do tipo char *.
E nós vamos especificar que como o argumento.
Meu aplicativo não precisa saber o que foi impresso ou se
foi impresso.
Assim, o valor de retorno será do tipo void.
Esta função pode imprimir a tela com um comando como
printf ("Olá,% s \ n
", Nome);.
A saudação será exibido e controle será passado
voltar para o código de chamada.
Uma coisa a notar é que, quando o tipo de valor de retorno é nulo,
você não precisa incluir um retorno
declaração na função.
Se você optar por incluir um, não incluir um valor de retorno
como um argumento.
>> Em alguns casos, faz sentido para retornar uma
valor de uma função.
Vamos dizer que estávamos a escrever uma função chamada add_floats.
Nós vamos passar dois argumentos, ambos os carros alegóricos,
chamado primeiro e segundo.
E vai nos dizer o que a soma desses carros alegóricos é.
Sabemos que, se somarmos dois flutuadores em conjunto, o resultado
Será um flutuador.
Dado que, escolhemos um tipo de retorno de bóia.
Esta função irá executar este cálculo e retornar
os valores em uma declaração como retorno
+ primeiro segundo;.
Quando o controle é passado de volta para o código de chamada, o
valor resultante já está disponível para esse código.
Podemos armazenar este valor assim: resultado float =
add_floats (3,14, 1,62
);.
Resultado neste caso seria agora conter o valor 4,76.
>> Como um lembrete, valores de ponto flutuante são imprecisos.
Assim, se este era um cálculo financeiro, usando dólares e
centavos, pode querer considerar um tipo de dados precisos, como
int e realizar o cálculo em moedas de um centavo.
>> Outro caso em que gostaria de retornar um valor de uma
função é quando queremos saber se uma função foi
bem sucedido.
Se não foi bem sucedida, podemos também querem saber que tipo de
erro ocorreu.
Vamos dizer que estamos a tentar abrir um arquivo no disco para contar
o número de caracteres na mesma.
Se o arquivo não pode ser aberto, nós queremos ser capazes de parar e
informar ao usuário sobre o problema.
>> Vamos chamar count_file_chars nossa função e vai
tomar um argumento.
Nós vamos passar o nome do arquivo usando um
char * chamado filename.
Esta função pode parecer algo como isto.
Neste exemplo, seria de esperar a contagem voltou a
ser 0 ou mais.
Isto deixa-nos os números inteiros negativos
usar-se como valores de sentinela.
Um valor sentinela é simplesmente um valor especial que não é
dados legítimos, mas não transmitir informações.
Aqui, se eu voltar a -1 para o código de chamada, eu sou
realmente enviando a mensagem de que ocorreu um erro enquanto
tentando acessar o arquivo.
Eu poderia, então, verificar que o valor de retorno para determinar se o meu
chamada de função foi bem sucedida.
Se o número foi de 0 ou mais, eu gostaria de saber o
número de caracteres no arquivo.
Se, no entanto, o número foi inferior a 0, I poderia simplesmente
imprimir um problema que tinha ocorrido.
Um trade-off a considerar é que, reservando todos os
valores negativos como valores de sentinela, assumindo que este é um
32-bit inteiro, eu essencialmente levado em torno de
2000000000 possíveis valores de retorno.
>> Tipos de valores de retorno são um dos elementos mais importantes do
chamadas de função.
Esperemos que este pequeno resumo tenha ajudado a pensar sobre
três tipos principais: void, valores de resultado e os valores de sentinela,
e quando cada um dos três podem ser
apropriado no seu código.
Obrigado por assistir.