[Powered by Google Translate] CHRIS GERBER: Una funció és una sèrie de passos dins d'un
programa més gran, que normalment es destina a ser anomenat
diverses vegades i de diverses altres localitats
el programa.
En crear una funció C, un dels requisits és
especificar un tipus de valor de retorn.
El cas més simple és una situació en què la flama
codi no es refereix amb el resultat de la funció.
Aquest podria ser el cas quan s'està imprimint dades a la
per mostrar l'usuari, igual que printf.
En aquest cas, es pot declarar un valor de retorn
ser de tipus void.
Usando buit simplement li diu al compilador que no
valor serà retornat.
Anem a veure com es veu.
>> Diguem que tenim una funció anomenada decir_hola que
pren un argument.
Anem a passar el nom d'una persona i es mostrarà una salutació
a la pantalla.
El nom serà de tipus char *.
I anem a especificar que com a argument.
La meva aplicació no ha de saber el que estava imprès o si
es va imprimir.
Així, el valor retornat serà de tipus void.
Aquesta funció es pot imprimir a la pantalla amb una ordre com
printf ("Hola,% s \ n
", Nom);.
La salutació es mostrarà i el control es passa
tornar al codi de trucada.
Una cosa a tenir en compte és que quan el tipus de valor de retorn és nul,
no cal que inclogui una declaració de
declaració en la funció.
Si opta per incloure una, no s'inclou un valor de retorn
com a argument.
>> En alguns casos, té sentit per tornar una
valor d'una funció.
Diguem que estàvem escrivint una funció anomenada add_floats.
Anem a passar dos arguments, ambdós flotadors,
diu primer i segon.
I ens dirà quina és la suma dels flotadors és.
Sabem que si sumem dos flotadors junts, el resultat
serà un flotador.
Tenint en compte que, triem un tipus de retorn de flotador.
Aquesta funció serà realitzar aquest càlcul i tornar
els valors d'una declaració com la devolució
1 + segon;.
Quan el control es retorna al codi de trucada, el
El valor resultant està disponible per aquest codi.
Podem emmagatzemar aquest valor, així: float resultat =
add_floats (3,14, 1,62
).
Resultat en aquest cas ara contindria el valor 4,76.
>> Com recordatori, els valors de punt flotant són imprecises.
Així que si es tractava d'un càlcul financer, utilitzant dòlars i
centaus de dòlar, és possible que vulgueu considerar un tipus de dades precises, com ara
int i realitzar el càlcul en penics.
>> Un altre cas en què es vol tornar un valor des d'una
Es presenta quan volem saber si una funció es
reeixida.
Si no s'ha realitzat correctament, també pot voler saber quin tipus de
error.
Diguem que estem intentant obrir un arxiu en el disc per explicar
el nombre de caràcters-hi.
Si el fitxer no es pot obrir, que vol ser capaç d'aturar i
informar a l'usuari sobre el problema.
>> Anomenarem als nostres count_file_chars funció i ho farà
prendre un argument.
Anem a passar en el nom del fitxer fent servir una
char * nom de l'arxiu anomenat.
Aquesta funció podria ser alguna cosa com això.
En aquest exemple, s'esperaria que el nombre tornat a
ser 0 o més.
Això ens deixa als enters negatius
utilitzar com a valors de sentinella.
Un valor sentinella és simplement un valor especial que no és
dades legítims, però que transmetre la informació.
En aquest cas, si torno un -1 al codi de trucada, estic
d'enviar el missatge que ha produït un error mentre
tractant d'accedir a l'arxiu.
Llavors podria comprovar que el valor de retorn per determinar si la meva
crida a la funció es va realitzar correctament.
Si el nombre és 0 o major, m'agradaria saber el
nombre de caràcters a l'arxiu.
Si, però, el nombre va ser de menys de 0, podria simplement
imprimir un problema que havia passat.
Una solució de compromís a tenir en compte és que en reservar tot el
valors negatius com valors sentinella, assumint que aquest és un
32-bit sencer, he tret essencialment al voltant de
2000000000 possibles valors retornats.
>> Tipus de valor retornats de valor són un dels elements més importants de
crides a funcions.
Esperem que aquest breu resum us hagi ajudat a pensar en
tres tipus fonamentals: buits, valors de resultat, i els valors sentinella,
i quan cada un dels tres podrien estar
corresponent al codi.
Gràcies per la seva atenció.