[Powered by Google Translate] Chris Gerber: Unha función é unha serie de pasos dentro dun
programa maior, que normalmente é destinado a ser chamado
varias veces e de moitos outros locais en
o programa.
Ao crear unha función C, un dos requisitos é
especificar un tipo de valor de retorno.
O caso máis simple é unha situación en que o enlazando
código non se preocupa o resultado da función.
Este pode ser o caso cando estamos a impresión de datos para o
exhibición do usuario, como con printf.
Neste caso, podemos declarar un valor de retorno
ser do tipo void.
Usando baleiro simplemente di ao compilador que non
valor será devolto.
Imos ver o que iso parece.
>> Imos dicir que temos unha función chamada say_hello que
ten un argumento.
Nós imos pasar o nome da persoa e ha amosar un saúdo
na pantalla.
O nome será do tipo char *.
E nós imos indicar que como argumento.
O meu programa non precisa saber o que foi impreso ou
foi impreso.
Así, o valor de retorno será do tipo void.
Esta función pode imprimir a pantalla con un comando como
printf ("Ola% s \ n
"Nome);.
A saúdo será amosado e control será pasado
volver ao código de chamada.
Unha cousa a notar é que, cando o tipo de valor de retorno é nulo,
non necesita incluír un retorno
declaración na función.
Se vostede optar por incluír un, non incluír un valor de retorno
como un argumento.
>> Nalgúns casos, ten sentido para voltar unha
valor dunha función.
Imos dicir que estabamos a escribir unha función chamada add_floats.
Nós imos pasar dous argumentos, ambos os coches alegóricos,
chamado primeiro e segundo.
E vai nos dicir o que a suma deses coches alegóricos é.
Sabemos que, se sumarmos dous flotadores en conxunto, o resultado
Será un flotador.
Dado que, escollemos un tipo de retorno de boia.
Esta función pode executar este cálculo e volver
os valores nunha declaración como retorno
+ Primeiro segundo;.
Cando o control é pasado de volta para o código de chamada, o
valor resultante xa está dispoñible para este código.
Podemos almacenar este valor así: resultado float =
add_floats (3,14, 1,62
);.
Resultado neste caso sería agora conter o valor 4,76.
>> Como un recordatorio, valores de punto flotante son imprecisos.
Así, este era un cálculo financeiro, usando dólares e
centavos, pode querer considerar un tipo de datos precisos, como
int e realizar o cálculo en moedas de un centavo.
>> Outro caso en que quere retornar un valor dunha
función é cando queremos saber se unha función foi
exitoso.
Se non foi exitosa, podemos tamén queren saber que tipo de
erro.
Imos dicir que estamos a tentar abrir un arquivo no disco para contar
o número de caracteres na mesma.
Se o ficheiro non puido ser aberto, queremos ser capaces de parar e
informar ao usuario sobre o problema.
>> Imos chamar count_file_chars nosa función e vai
tomar un argumento.
Nós imos pasar o nome do ficheiro mediante un
char * chamado filename.
Esta función pode parecer algo coma isto.
Neste exemplo, sería de esperar a conta volveu
ser 0 ou máis.
Isto deixa-nos os números enteiros negativos
usar-se como valores de centinela.
Un valor centinela é simplemente un valor especial que non é
datos lexítimos, pero non transmitir información.
Aquí, se eu volver a -1 para o código de chamada, eu son
realmente enviando a mensaxe de que houbo un erro mentres
intentando acceder ao arquivo.
Eu podería, entón, comprobar que o valor de retorno para determinar se o meu
chamada de función foi exitosa.
Se o número foi de 0 ou máis, gustaríame saber o
número de caracteres no ficheiro.
Se, con todo, o número foi inferior a 0, I podería simplemente
imprimir un problema que ocorrera.
Un trade-off a considerar é que, reservándose todos os
valores negativos como valores de centinela, asumindo que se trata dun
32-bit enteiro, eu esencialmente levado en torno a
2000000000 posibles valores de retorno.
>> Tipos de valores de retorno son un dos elementos máis importantes do
chamadas de función.
Esperemos que este pequeno resumo teña axudado a pensar sobre
tres tipos principais: void, valores de resultado e os valores de Sentinela,
e cando cada un dos tres poden ser
apropiado no seu código.
Grazas por asistir.