[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ó.