Ten artykuł przedstawi Ci prostą, ale bardzo podstawową i ważną koncepcję, czyli funkcje w C, a następnie demonstrację. Poniższe wskazówki zostaną omówione w tym artykule,
- Co to są funkcje w C?
- Zalety funkcji w C
- Rodzaje funkcji w C
- Deklaracja funkcji i definicja
- Wywołanie funkcji
- Typy funkcji zdefiniowanych przez użytkownika w C
- Nie przekazano żadnych argumentów i nie zwrócono wartości
- Nie przekazano żadnych argumentów, ale wartość zwracana
- Argument przekazany, ale brak wartości zwracanej
- Argument przekazany i wartość zwracana
- Funkcje biblioteki C.
Funkcje są elementami składowymi dowolnego języka programowania. Krótko mówiąc, funkcja w zestawie instrukcji, która pobiera dane wejściowe, wykonuje określone zadanie, a następnie zwraca dane wyjściowe.
Ideologią kryjącą się za tworzeniem funkcji jest powiązanie ze sobą zestawu powiązanych instrukcji, które wykonują określone zadanie. Dzięki temu nie musisz wielokrotnie pisać tego samego kodu dla różnych zestawów danych wejściowych. Wystarczy wywołać funkcję dla różnych wejść, wykona ona określone zadanie dla danego wejścia i zwróci dane wyjściowe. Możesz wywoływać tę funkcję tyle razy, ile chcesz. Na tym blogu nauczymy się każdego niuansu dotyczącego funkcji w języku programowania C.
Zacznijmy od najbardziej fundamentalnego pytania.
Co to są funkcje w C?
Funkcje w C są takie same jak w każdym innym języku programowania. Jest to zestaw kodów powiązanych ze sobą w celu wykonania określonego zadania. Zestaw kodu do wykonania jest określony w nawiasach klamrowych, tj. „{}”.
Zanim nauczymy się pisać funkcję w C, najpierw zrozumiemy, jakie są jej zalety.
Zalety funkcji w C
Zalety funkcji są wspólne dla wszystkich języków programowania.
Główną ideą funkcji jest zmniejszenie nadmiarowości w kodzie. Załóżmy, że masz funkcję, która musi być wykonywana wiele razy w programie, więc zamiast pisać ją wiele razy, możesz utworzyć funkcję dla tego zadania i wywoływać ją tyle razy, ile chcesz. Inną ukrytą korzyścią jest to, że jeśli logika Twojej funkcjonalności zmieni się później, nie musisz zmieniać jej w wielu miejscach. Wystarczy zmienić kod w jednym miejscu (tj. W funkcji), a zostanie to odzwierciedlone w całym programie.
Modułowość to znowu dodatkowa korzyść. Pisanie dużego fragmentu kodu zawierającego wszystko, zmniejsza czytelność kodu i utrudnia zarządzanie. Możesz podzielić kod na sekcje dla poszczególnych funkcjonalności za pomocą funkcji, co jest prostsze do zrozumienia i łatwiejsze w zarządzaniu.
Funkcja zapewnia również abstrakcję, w której możemy wywołać funkcję i uzyskać wynik bez znajomości wewnętrznej implementacji.
Przechodząc do typów funkcji C
Rodzaje funkcji w C
Istnieją dwa rodzaje funkcji:
Funkcje biblioteczne
Funkcje zdefiniowane przez użytkownika
Funkcje biblioteczne to te funkcje, które są już zdefiniowane w bibliotece C, takie jak strcat (), printf (), scanf () itp. Aby korzystać z tych funkcji, wystarczy dołączyć odpowiednie pliki nagłówkowe.
Funkcje zdefiniowane przez użytkownika to te funkcje, które są definiowane przez użytkownika. Funkcje te zostały stworzone z myślą o możliwości ponownego wykorzystania kodu oraz w celu zaoszczędzenia czasu i miejsca.
Teraz, gdy znamy zalety tworzenia funkcji, przyjrzyjmy się, jak zadeklarować funkcję w C.
Deklaracja funkcji i definicja
Deklaracja funkcji:
Składnia deklaracji funkcji:
return_type function_name (data_type arg1, data_type arg2) int add (int x, int y) // deklaracja funkcji
W deklaracji funkcji określamy nazwę funkcji, liczbę parametrów wejściowych, ich typy danych i typ zwracanej funkcji. Deklaracja funkcji informuje kompilator o liście argumentów, których funkcja oczekuje wraz z typami danych i typem zwracanym przez funkcję.
def __init__ w Pythonie
W deklaracji funkcji podanie nazw parametrów jest opcjonalne, ale określenie ich typów danych jest obowiązkowe.
int add (int, int) // deklaracja funkcji
Powyższa funkcja przyjmuje dwa parametry całkowite.
Definicja funkcji
int add (int, int) // deklaracja funkcji return_type nazwa_funkcji (parametry) {treść funkcji}
Jak pokazano na powyższym obrazku, definicja funkcji składa się z dwóch części, tj. Nagłówka funkcji i treści funkcji
Nagłówek funkcji: nagłówek funkcji jest taki sam jak deklaracja funkcji bez średnika. Nagłówek funkcji zawiera nazwę funkcji, parametr i typ zwracanej wartości.
Typ zwrotu: Typ zwracany to typ danych wartości, która zostanie zwrócona przez funkcję. Funkcja może zwracać wartość lub nie. Jeśli tak, należy określić typ danych wartości ponownej strojenia, w przeciwnym razie typ zwracany musi być nieważny.
Nazwa funkcji: To jest nazwa funkcji, za pomocą której możemy wywołać funkcję, kiedy i gdzie jest to potrzebne.
Parametry: Parametry to wartości wejściowe, które zostaną przekazane do funkcji. Informuje o typach danych argumentów, ich kolejności oraz liczbie argumentów, które zostaną przekazane do funkcji. Parametry są opcjonalne. Możesz także mieć funkcje bez parametrów.
Ciało funkcji: Treść funkcji to zestaw instrukcji wykonujących określone zadanie. Określa, co robi funkcja.
Przykład:
int add (int x, int y) {int sum = x + y return (sum)}
Zaleca się zadeklarowanie funkcji przed jej zdefiniowaniem i użyciem. W C możemy zadeklarować i zdefiniować funkcję w tym samym miejscu.
Przykład:
#include int add (int, int) // deklaracja funkcji // definicja funkcji int add (int x, int y) // nagłówek funkcji {// treść funkcji int sum = x + y return (sum)} // Funkcja główna int main () {int sum = add (23, 31) printf ('% d', sum) return 0}
Jak widać w powyższym przykładzie, wywołujemy funkcję za pomocą instrukcji int sum = add (23, 31). Zwracana wartość z funkcji jest przechowywana w zmiennej sumarycznej.
Zanim przejdziemy do przodu, należy zrozumieć jeszcze jedną ważną koncepcję dotyczącą paramentu. Istnieją dwa rodzaje parametrów:
Rzeczywisty parametr : Parametry, które są przekazywane do funkcji podczas ich wywoływania, nazywane są parametrami rzeczywistymi. Na przykład 23 i 31 w powyższym przykładzie to rzeczywiste parametry.
Parametr formalny : Parametry, które są odbierane przez funkcje, nazywane są parametrami formalnymi. Na przykład x i y w powyższym przykładzie to parametry formalne.
Przejdźmy szybko do przodu i poznajmy różne sposoby wywoływania funkcji w C.
Wywołanie funkcji
Funkcję możemy wywołać na dwa sposoby:
- Zadzwoń według wartości
- Zadzwoń przez odniesienie
Zadzwoń według wartości
javascript alert zaloguj się, aby pobrać
W metodzie call by value wartość rzeczywistego parametru jest przekazywana jako argument do funkcji. Wartość rzeczywistego parametru nie może być zmieniona przez parametry formalne.
W metodzie call be value, różne adresy pamięci są przydzielane do parametrów formalnych i rzeczywistych. Tylko wartość rzeczywistego parametru jest kopiowana do parametru formalnego.
Przykład:
#include void Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nBefore Function, Number is% d', num ) Call_By_Value (num) printf ('nAfter Function, Number is% dn', num) return 0}
Wynik
W powyższym przykładzie, przed wywołaniem funkcji przez wartość, wartość num wynosi 24. Następnie, gdy wywołasz funkcję i przekażemy wartość i zmienimy ją wewnątrz funkcji, otrzymamy 42. Kiedy wrócimy i ponownie wydrukujemy wartość z num w funkcji głównej, staje się 24.
Zadzwoń przez odniesienie
W wywołaniu przez odniesienie adres pamięci rzeczywistego parametru jest przekazywany do funkcji jako argument. Tutaj wartość rzeczywistego parametru można zmienić za pomocą parametru formalnego.
Ten sam adres pamięci jest używany zarówno dla parametru rzeczywistego, jak i formalnego. Tak więc, jeśli wartość parametru formalnego jest modyfikowana, jest to również odzwierciedlane przez faktyczny parametr.
W C używamy wskaźników do implementacji wywołania przez odniesienie. Jak widać w poniższym przykładzie, funkcja Call_By_Reference oczekuje wskaźnika do liczby całkowitej.
Teraz ta zmienna num1 będzie przechowywać adres pamięci aktualnego parametru. Tak więc, aby wydrukować wartość, która jest przechowywana w adresie pamięci wskazywanym przez num1, musimy użyć operatora wyłuskiwania, tj. *. Zatem wartość * num1 to 42.
Operator adresu & służy do pobierania adresu zmiennej dowolnego typu. Tak więc w instrukcji wywołania funkcji „Call_By_Reference (& num)” przekazywany jest adres num, aby można go było modyfikować za pomocą jego adresu.
Przykład
#include // definicja funkcji void Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Główna funkcja int main () {int num num = 24 printf ( 'nBefore Function, Number is% d', num) Call_By_Reference (& num) printf ('nAfter Function, Number is% dn', num) return 0}
Wynik
W tym przykładzie wartość num wynosi początkowo 24, wewnątrz funkcji main. Po przekazaniu do funkcji Call_By_Reference i zmodyfikowaniu wartości przez parametr formalny została ona również zmieniona dla rzeczywistego parametru. Dlatego kiedy wypisujemy wartość num po funkcji, którą wypisuje 42.
Przechodząc do typów funkcji zdefiniowanych przez użytkownika w C
Typy definiowane przez użytkownika Funkcjonować w C
Istnieją różne rodzaje funkcji zdefiniowanych przez użytkownika w oparciu o zwracany typ i przekazane argumenty.
Przechodzenie dalej bez przekazanych argumentów i wartości zwracanej
Nie przekazano żadnych argumentów i nie zwrócono wartości
Składnia:
deklaracja funkcji:
void function () wywołanie funkcji: function () definicja funkcji: void function () {instrukcje}
Przykład
jak podnieść coś do potęgi w Javie
#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}
Przechodząc dalej bez przekazanych argumentów, ale wartość zwracana
2 Nie przekazano żadnych argumentów, ale wartość zwracana
Składnia:
deklaracja funkcji:
int function () wywołanie funkcji: function () definicja funkcji: int function () {instrukcje zwracają a}
Przykład:
#include int add () int add () {int x = 20 int y = 30 int sum = x + y return (sum)} int main () {int sum sum = add () printf ('sum% d', sum) return 0}
Przechodząc dalej z przekazanymi argumentami, ale bez wartości zwracanej
3 Argument przekazany, ale brak wartości zwracanej
Składnia:
deklaracja funkcji:
void function (int) wywołanie funkcji: function (a) definicja funkcji: void function (int a) {instrukcje}
Przykład:
#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}
Przechodząc dalej z przekazanym argumentem i wartością zwracaną
4 Przekazany argument i wartość zwracana
Składnia:
deklaracja funkcji:
int function (int) wywołanie funkcji: function (a) definicja funkcji: int function (int a) {instrukcje zwracają a}
Przykład
#include int add (int, int) int add (int x, int y) {int sum = x + y return (sum)} int main () {int sum = add (23, 31) printf ('% d' , sum) return 0}
Przyjrzyjmy się teraz szybko funkcjom biblioteki C, które są ważne przy pisaniu programu.
Funkcje biblioteki C.
Funkcje biblioteczne to funkcje w C, które są wstępnie zdefiniowane i są obecne domyślnie. Musisz tylko dołączyć określony plik nagłówkowy do programu i możesz używać funkcji zdefiniowanych w tym pliku nagłówkowym. Każdy plik nagłówkowy zapewnia określony rodzaj funkcjonalności. Rozszerzenie pliku nagłówkowego to .h.
Na przykład, aby korzystać z funkcji printf / scanf, musimy dołączyć do naszego programu stdio.h, który zapewnia funkcjonalność dotyczącą standardowego wejścia / wyjścia.
Poniżej znajduje się lista plików nagłówkowych.
jeden | stdio.h | Standardowy plik nagłówkowy wejścia / wyjścia |
2 | bicie. h | Plik nagłówkowy wejścia / wyjścia konsoli |
3 | string.h | Funkcje biblioteczne związane z ciągami, takie jak gets (), puts () itp. |
4 | stdlib.h | Ogólne funkcje biblioteki, takie jak malloc (), calloc (), exit () itp. |
5 | math.h | Funkcje związane z operacjami matematycznymi, takie jak sqrt (), pow () itp. |
6 | time.h | Funkcje związane z czasem |
7 | ctype.h | Funkcje obsługi znaków |
8 | stdarg.h | Zmienne funkcje argumentowe |
9 | signal.h | Funkcje obsługi sygnałów |
10 | setjmp.h | Funkcje skoku |
jedenaście | locale.h | Funkcje lokalne |
12 | errno.h | Funkcje obsługi błędów |
13 | assert.h | Funkcje diagnostyczne |
Teraz po przejściu przez powyższe funkcje C zrozumiałbyś każdy niuans funkcji i jak zaimplementować ją w języku C. Mam nadzieję, że ten blog jest dla Ciebie pouczający i stanowi wartość dodaną.
W ten sposób doszliśmy do końca artykułu „Funkcje w C”. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z , zaufana firma zajmująca się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.