Cześć i witaj.
W tym wykładzie chcę porozmawiać o zwracaniu danych z funkcji.
Aż do tego momentu wiemy co funkcja to wiemy, dlaczego jest przydatna,
wiemy, jak definiować funkcje wiedzieć, jak przekazywać dane do funkcji.
Teraz chcemy porozmawiać o tym, jak my może zwracać dane z funkcji,
co jest również bardzo przydatne.
W naszym poprzednim przykładzie, kiedy my pomnóż dwie liczby,
funkcja mnożenia wyświetli wyniki obliczenia na terminalu.
Pamiętaj, mieliśmy to tam instrukcja printf.
Mieliśmy również przykład, w którym my wcześniej były po prostu prostą funkcją.
Właśnie wydrukowaliśmy dane wewnątrz funkcji.
Chcieliśmy być mili zamiast przynieś to, ponieważ w
rzeczywistości robi więcej niż jedną rzecz.
Właściwie to wydrukowało, plik dane zostały zwrócone i
wydrukowało dane w funkcji main.
Nie zawsze możesz chcieć mieć rozszerzenie wyniki obliczeń wyświetlane.
Funkcja staje się czymś więcej elastyczny, bardziej ogólny, co
z kolei pozwala na jego użycie więcej, jeśli możesz zwrócić dane.
Funkcje mogą więc zwracać dane używając określonej składni w c.
Powinniśmy się z tym zapoznać trochę, bo
pamiętajmy o naszej głównej funkcji na samym początku koniec w wielu
przykładach zwracamy dane.
Więc byliśmy na to trochę narażeni.
Po prostu nie mamy zrozumiał, co to znaczy.
Przyjrzyjmy się jeszcze raz plikowi ogólna postać funkcji.
Pamiętaj, ten nagłówek funkcji.
Mieliśmy typ zwrotu, który był słowo, które zostało zdefiniowane jako pierwsze.
A potem mieliśmy nazwę, a potem mieliśmy parametry oddzielone
przecinkami w nawiasach.
Znamy już nazwa i parametry.
Pierwszą rzeczą jest typ zwrotu.
Typ zwrotu określa typ danych wartości zwracanej
przez funkcję.
Funkcje mogą zwracać dowolne dane.
Musisz tylko powiadomić kompilator jakiego rodzaju dane zwracasz, jeśli.
To jest int, float, double cokolwiek to jest, musisz to określić w
nagłówku swojej funkcji.
Typ zwrotu.
Typ zwrotu, który widzieliśmy tutaj, i możesz określić, jaki typ wartości ma być zwracany
przez funkcję o ile jest to typ prawny w c.
Wspomniałem o głównych, double, float i tak dalej.
Ale możesz też wrócić wyliczenia i wskaźniki.
Nie omawialiśmy wskaźników, ale sprawia, że zwracanie wskaźników jest
bardzo, bardzo elastyczne.
Zwracany typ can należy również unikać typu.
Często widzisz to słowo kluczowe void.
Teraz rozumiemy, co to oznacza.
Nieważne oznacza, że brak danych zostanie zwrócony.
Jeśli widzisz pustkę przed nazwa funkcji, nie zwracasz
żadnych danych.
Jeśli widzisz pustkę w parametrach list, nie przekazujesz żadnych danych.
Pustka to tylko ogólne słowo kluczowe that w przypadku typów zwracanych i parametrów można również zauważyć, że można użyć void
również jako wskaźnik, ale dojdziemy do tego, kiedy już
do tego dojdziemy.
Ale pustka to sposób na milczenie.
I powód, dla którego uwzględniasz nieważne, w przeciwieństwie do nieuwzględniania niczego
z powodu tego sprawia, że program jest bardziej czytelny.
W rzeczywistości, gdy przekazujesz dane do pliku funkcji i nie
masz żadnych przekazywanych danych, możesz je mieć to po prostu puste nawiasy.
Łatwo to przeczytać, jeśli masz tam pustkę.
To samo dotyczy zwracanego typu, z wyjątkiem typ zwrotu, który musisz mieć void.
Nie możesz mieć tego po prostu pustego.
Nieważne oznacza, że żadne dane nie są zostanie zwrócony.
Instrukcja return.
Rozmawialiśmy o tym, jak możesz określić, jakie dane zostaną zwrócone, ale jak
to zrobić faktycznie zwracasz dane.
Wewnątrz funkcji, ty musisz mieć oświadczenie, w którym możesz powiedzieć,
co zamierzasz zwrócić.
Ponieważ pamiętaj o treści pliku funkcja może mieć dużo danych.
Może mieć zmienne lokalne czy wiesz, że funkcja może
wykonywać określone obliczenia, może robisz wiele obliczeń, co
chcesz zwrócić.
Na szczęście jest takie stwierdzenie ze słowem kluczowym return.
Jeśli zapewnisz zwrot bez nazwy zmiennej po lub wyrażeniu, to znaczy,
że jesteś po prostu wychodząc z funkcji.
Przypomina przerwanie pętli.
Po prostu wracasz z funkcji.
Możesz to podać w formacie funkcje zdefiniowane jako nieważne.
Wyjaśnia, kiedy wychodzisz z funkcji.
Naprawdę powinieneś mieć tylko powrót w jednym miejscu
na dole funkcji.
Dojdziemy do tego później, ale ty nie może mieć go nigdzie w funkcji.
Jeśli zobaczysz to w dowolnym miejscu funkcja, to znaczy, że
wyskakujesz z tej funkcji.
Powód, dla którego warto mieć na dole jest to bardzo jasne,
kiedy wychodzisz z funkcji.
Jeśli masz wiele zwrotów nawet jeśli zwracasz dane przez całą
funkcję, to jest trudno powiedzieć, kiedy wracasz.
Więc co lubię robić w moim funkcje to tworzenie zmiennych i zwracanie ich
tylko raz na dole.
Jeśli muszę coś zwrócić funkcja lub mam na myśli w określonej instrukcji if w funkcji
lub coś ustawię zmienną i zwrócę
ją na dole.
Więc jeśli masz powrót i ty nic po nim
nie ma, to po prostu oznacza, że wychodzisz z funkcja bez zwróconych danych.
To naprawdę nie jest używane tak często.
Używasz go tylko w pustce funkcja, nie zwraca wartości.
Bardziej ogólna forma instrukcja return zwraca jakąś
zmienną lub jakieś wyrażenie.
X plus y lub zwracanie x.
Ta forma oświadczenia o zwrocie ma do użycia z typem zwracanym określonym
w nagłówku funkcji.
Jeśli zwracasz int, cokolwiek ta zmienna lub wyrażenie, które
zwracasz, musi być int.
Musi mieć wartość int, jeśli zwracasz int.
Teraz, jeśli skręcasz podwójnie, wartość musi się podwoić.
Pamiętaj, możesz mieć ich wiele różne typy zwracanych danych.
Wartość, która jest zwracana do programu wywołującego
jest wartością, która powstaje, gdy wyrażenie jest obliczane w ten sposób.
Jeśli masz x plus y, to wraca wynik tego wyrażenia i musi być
tego samego typu co deklaracja funkcji, jak wspomniałem.
Funkcja zawierająca instrukcje w treści funkcji,
ale nie zwraca wartości, musi mieć rozszerzenie return type as void, must to.
Nie możesz tego nie mieć.
Jeśli tego nie masz, a jesteś nie zwraca
żadnych danych, otrzymasz komunikat o błędzie.
Podczas kompilacji programu i zawiera funkcję z zwracanym typem void, która
próbuje to zrobić zwraca błąd kompilatora wartości.
Pustka oznacza brak danych zwrotnych, nie rób tego zwraca zmienną wyrażenie.
Jeśli funkcja nie ma pustki zwracany typ i
ma prawidłowy typ zwrotu, otrzymasz plik komunikat o błędzie, jeśli kompilator
próbuje zwrócić inny typ niż określony lub jeśli po prostu
wrócili bez niczego po nim.
Więc zwróć na to uwagę.
Te słowa kluczowe na początku deklaracje funkcjonalne są ważne.
Wpływa bezpośrednio na implementację funkcji, a kompilacja powie ci, czy wkręcasz up i nie zwrócisz
właściwych danych lub nie zwrócisz żadnych
dane lub jeśli zwracasz dane, gdy nie powinieneś
zwracać danych.
Jeśli wyrażenie daje w wyniku wartość to inny
typ niż typ zwracany w funkcji nagłówek, c spróbuje go przekonwertować.
Kompilator spróbuje przekonwertować, jeśli to możliwe.
Na przykład, jeśli wracasz float, a twoje wyrażenie to I dodać x z dwoma
intami, leci aby po prostu przekonwertować go na float.
Jeśli zwracasz int i masz wyrażenie,
które wykonuje obliczenia typu float, to przekonwertuje go na it.
Utracisz w ten sposób dane przypadku, ale dokona konwersji.
Nie zawsze jest to możliwe zrobić konwersję.
W przypadkach, gdy nie jest to możliwe, będziesz miał błąd, który
jest generowany przez kompilator.
Jeśli próbujesz zwrócić int kiedy masz
zwrócić ciąg lub kiedy próbujesz aby zwrócić
go, gdy powinieneś zwrócić wyliczenie, to jest zamierzam narzekać kompilator.
Możesz też mieć więcej niż jeden instrukcja return funkcja, wspomniałem
o tym krótko i dlaczego nie chcesz tego robić.
Ale możesz to zrobić.
Możesz mieć wiele zwrotów przez całą funkcję.
To tylko utrudnia kod podążaj, ponieważ wyskakujesz
z funkcji w każdym miejscu.
Kiedy wrócisz i to zrobisz wiele wartości zwracanych, po
prostu upewnij się ponownie, jeśli masz funkcję
która coś zwraca, masz wyrażenie lub wartość tego typu lub można go przekonwertować.
Teraz, o którym rozmawialiśmy przekazując dane i zwracając dane,
wiemy jak wywołać funkcję, ale chcę powiedzieć kilka
innych rzeczy na temat inwokacji.
Wywołujesz funkcję, używając po prostu nazwa funkcji, po której następują
argumenty, które przekazujesz w nawiasach, wiemy, że daleko
wiemy, ale ja chcesz to formalnie określić, w ten sposób
możesz wywołać funkcję.
Kiedy wywołujesz funkcję, plik wartości
argumentów określonych w nawiasach zostaną przypisane do
parametrów wewnątrz funkcji.
Parametry są reprezentatywne zmienne o typie danych.
Możesz następnie użyć tej zmiennej po dowolnej stronie korpusu funkcji.
Kiedy funkcja kończy działanie lub jest wykonywana określony kod, użyje wartości podanych jako
argumenty, jak wspomniałem.
Argumenty, które określasz, gdy wywołanie funkcji powinna być zgodna co do
numeru typu i kolejności, gdy plik parametry w nagłówku funkcji.
Porządek też ma znaczenie, ja nie Podkreśl to, ale jeśli
mówi int x double y, najpierw musisz to zrobić przekazać int, a następnie double.
Nie możesz podać podwójnej i int.
Kolejność jest bardzo, bardzo konkretna.
Więc upewnij się, że przekazujesz dane jako argument, gdy wywołujesz
funkcję w taki sam sposób, jak funkcję jest zadeklarowany w nagłówku funkcji na
liście parametrów, przekazując odpowiednie typy też są takie.
Wywołanie funkcji i przypisanie zwróconych danych.
Jeśli funkcja zwraca dane, rozszerzenie funkcja może przypisać te dane za pomocą
operatora równości i po zwrot również lub możesz przechowywać go w zmiennej lokalnej,
jeśli chcesz.
Będzie również działać z wyrażeniem.
Możesz więc powiedzieć return x plus y, możesz powiedzieć return x, możesz
powiedzieć, że zwraca stałą.
Ten przykład jest po tobie wywołaj wywołanie, gdy chcesz przypisać
zwrócone dane.
Więc możesz powiedzieć, że int x równa się my wywołanie funkcji, cokolwiek ta funkcja
zwróci, zostanie przypisane do x.
A jeśli moje wywołanie funkcji zwróci x dodać y, wynik x plus y
zostanie przypisany do x.
Możesz więc przypisać dane zwracane z wywołania funkcji,
po prostu mając zmienną w pliku po lewej stronie równa
się i wywołanie funkcji w prawa strona równych sobie.
Funkcja wywołująca nie ma rozpoznawanie lub przetwarzanie wartości zwróconej
przez wywoływaną funkcję.
Nie musisz tego mieć to zadanie tam.
Jeśli funkcja zwraca dane i nie przejmujesz się tymi danymi, nie musisz
wcale mieć równych sobie, możesz po prostu wywołać funkcję.
To nie miałoby sensu, ponieważ jeśli zwraca dane, oznacza to,
że prawdopodobnie musisz się temu przyjrzeć to, ale nie musisz tego robić.
Kompilator tego nie zrobi narzekać, jeśli po prostu
wywołujesz funkcję i nie obsługujesz danych.
To zależy od ciebie, jak ty chcą użyć danych, które są
zwracane przez wywołania funkcji.
Oto przykład wywołania funkcja, a także zwracanie danych z
funkcji.
W tym przykładzie pomnóż dwie liczby.
To było zupełnie jak na przykładzie my wcześniej, ale poprzedni
przykład nie zwrócił żadnych danych.
Poprzedni przykład wyświetlił dane wyjściowe.
W tym przykładzie jesteśmy nie wyświetla żadnych danych wyjściowych.
Zwracamy dane i następnie wyświetlamy dane wyjściowe
w funkcji głównej.
Tutaj pomnożymy dwie liczby przyjmuje dwie liczby całkowite jako parametry.
Mnożymy te dwie liczby całkowite.
A potem zamiast tego drukować kwota lub wartość, używamy słowa kluczowego return
i jesteśmy wtedy określając zmienną o nazwie result, a następnie na
jej końcu mamy średnik.
Kiedy zobaczysz to zwrotne słowo kluczowe w treści funkcji zwracasz
te dane.
I pamiętaj, że możesz mieć tyle miejsc.
Ale możesz mieć tylko jeden zwrot value, nie możesz zwrócić wielu wartości.
Więc jeśli masz słowo kluczowe return w musi znajdować się
w instrukcji if lub w pętli, ponieważ wtedy wyskakujesz.
Jeśli masz zwrot, po którym następuje kolejny zwrot, da
ci błąd, ponieważ powie ci mają dwa zwroty w obu przypadkach.
Zawsze wracasz do wyników, nie możesz tego zrobić.
Ale słowo kluczowe return jest ważne.
Zwracasz zmienną.
A potem widzisz w głównym funkcja, do której są przypisywane zwracane
dane kolejna zmienna lokalna o nazwie result.
Zauważysz, że używamy te same nazwiska tutaj.
Ma to związek z funkcją zakres, o którym
będziemy rozmawiać w następnym wykładzie, lokalnym zmienne a zmienne globalne.
Wszystko, na co musisz zwrócić uwagę w tym wykładzie jest fakt,
że funkcja ta się zwielokrotniła dwie liczby zwracają dane.
Jak to zwracasz, zwracasz to używając słowa kluczowego return,
po którym następuje zmienna wyrażenia.
Zauważysz również, że mnożą się dwie liczby określają typ zwracania
na górze nagłówka funkcji.
Zwraca int.
Musimy więc zwrócić int.
Zauważysz również, że kiedy przypisujemy dane w funkcji main,
do której przypisujemy je w int.
Przypisywanie tych bardzo prostych my wystarczy mieć operator równości.
Jeśli nie dbaliśmy o dane, my mógł po prostu zadzwonić, pomnożyć dwie
liczby, a następnie nic z tym zrobić, ale.
Po zwróceniu danych z funkcji, następnie drukujemy ją
za pomocą funkcji printf.
To sprawia, że funkcja jest większa spójne, że wymaga danych.
W rzeczywistości nie wyświetlamy wyniki wewnątrz funkcji.
Są chwile, kiedy nie chcemy aby
wyświetlić wyniki, wystarczy pomnożyć dwie liczby, a następnie możemy chcieć podzielić produkt.
Elastyczność w przekazywaniu danych a zwracane dane to poważna sprawa.
To jest prosty przykład.
Będziesz narażony na działanie o tym więcej w naszym następnym wyzwaniu.