Alles wat u moet weten over functies in C?



Dit artikel zal je een eenvoudig maar zeer fundamenteel en belangrijk concept introduceren, namelijk Functies in C, en het vervolgens volgen met een demonstratie.

Dit artikel introduceert een eenvoudige maar zeer fundamentele en belangrijke concept dat Functies in C is, gevolgd door een demonstratie. De volgende tips komen in dit artikel aan bod:

Functies zijn bouwstenen van elke programmeertaal. In eenvoudige bewoordingen, functioneer in een set instructies, die invoer nodig heeft, een specifieke taak uitvoert en vervolgens de uitvoer retourneert.
De ideologie achter het creëren van een functie is om een ​​reeks gerelateerde verklaringen samen te binden die een specifieke taak uitvoeren. Zodat u niet meerdere keren dezelfde code hoeft te schrijven voor verschillende sets invoer. U hoeft alleen de functie voor verschillende ingangen aan te roepen, het zal de opgegeven taak voor de gegeven invoer uitvoeren en de uitvoer retourneren. U kunt de functie zo vaak aanroepen als u wilt. In deze blog leren we elke nuance over functies in programmeertaal C.





Laten we beginnen met de meest fundamentele vraag.

Wat zijn functies in C?

De functies zijn hetzelfde in C als in elke andere programmeertaal. Het is een reeks codes die aan elkaar zijn gebonden om een ​​specifieke taak uit te voeren. De set code die moet worden uitgevoerd, wordt tussen accolades gespecificeerd, d.w.z. ‘{}’.



Voordat we leren hoe we een functie in C moeten schrijven, moeten we eerst begrijpen wat de voordelen zijn.

Voordelen van functies in C

De voordelen van functies zijn gemeenschappelijk voor alle programmeertalen.
Het belangrijkste idee achter functie is om de redundantie in de code te verminderen. Stel dat u een functionaliteit heeft die meerdere keren in een programma moet worden uitgevoerd, dus in plaats van deze meerdere keren te schrijven, kunt u een functie voor die taak maken en deze zo vaak aanroepen als u wilt. Een ander verborgen voordeel is dat als de logica van uw functionaliteit achteraf verandert, u deze niet op meerdere plaatsen hoeft te wijzigen. U hoeft alleen maar de code op één plaats te wijzigen (d.w.z. in de functie) en deze wordt in het hele programma weergegeven.

Modulariteit is weer een bijkomend voordeel. Het schrijven van een groot stuk code inclusief alles en alles, vermindert de leesbaarheid van de code en maakt het moeilijk te beheren. U kunt de code in secties voor individuele functionaliteiten verdelen met behulp van functies, die eenvoudiger te begrijpen en gemakkelijker te beheren zijn.



Functie biedt ook abstractie, waarbij we een functie kunnen aanroepen en de uitvoer kunnen krijgen zonder de interne implementatie te kennen.

Verder gaan met soorten functie C

Typen functies in C

Er zijn twee soorten functies:
Bibliotheekfuncties
Door de gebruiker gedefinieerde functies

Bibliotheekfuncties zijn die functies die al zijn gedefinieerd in de C-bibliotheek, zoals strcat (), printf (), scanf () enz. U hoeft alleen de juiste headerbestanden op te nemen om deze functies te gebruiken.
Door de gebruiker gedefinieerde functies zijn die functies die door de gebruiker worden gedefinieerd. Deze functies zijn gemaakt voor herbruikbaarheid van code en om tijd en ruimte te besparen.

Nu we de voordelen kennen van het maken van een functie, gaan we eens kijken hoe we een functie in C declareren.

Functieverklaring en -definitie

Functie verklaring:

Syntaxis van functieverklaring:

return_type functienaam (data_type arg1, data_type arg2) int add (int x, int y) // functiedeclaratie

In Function Declaration specificeren we de naam van de functie, het aantal invoerparameters, hun datatypes en het retourtype van de functie. Functie-declaratie vertelt de compiler over de lijst met argumenten die de functie verwacht met hun gegevenstypen en het retourtype van de functie.

In functiedeclaratie is het specificeren van de namen van de parameter optioneel, maar het specificeren van hun gegevenstypen is verplicht.

int add (int, int) // functieverklaring

De hierboven gespecificeerde functie heeft twee gehele parameters nodig.

Functie definitie

 Beeldfuncties in C- Edureka
int add (int, int) // functiedeclaratie return_type functienaam (parameters) {Function body}

Zoals te zien is in de bovenstaande afbeelding, bestaat een functiedefinitie uit twee delen, namelijk de functiekop en het hoofdgedeelte van de functie

Functieheader: functieheader is hetzelfde als functiedeclaratie zonder de puntkomma. Functiekop bevat functienaam, parameter en retourtype.

  • Type retour: Retourtype is het gegevenstype van de waarde dat door de functie wordt geretourneerd. De functie kan al dan niet een waarde retourneren. Als dit het geval is, moet het gegevenstype van de herafstemmingswaarde worden opgegeven, anders moet het retourtype ongeldig zijn.

  • Functie naam: Dit is de naam van de functie waarmee we de functie kunnen aanroepen wanneer en waar nodig.

    salesforce ontwikkelaarstutorial voor beginners
  • Parameters: De parameters zijn de invoerwaarden die aan de functie worden doorgegeven. Het vertelt over de gegevenstypen van de argumenten, hun volgorde en het aantal argumenten dat aan de functie zal worden doorgegeven. De parameters zijn optioneel. U kunt ook functies hebben zonder parameters.

Functie lichaam: De functielichaam is de set instructies die een specifieke taak uitvoert. Het definieert wat de functie doet.

Voorbeeld:

int add (int x, int y) {int sum = x + y return (sum)}

Het wordt aanbevolen om een ​​functie te declareren voordat we deze definiëren en gebruiken. In C kunnen we de functie op dezelfde plaats declareren en definiëren.

Voorbeeld:

#include int add (int, int) // functieverklaring // functiedefinitie int add (int x, int y) // functieheader {// functie body int sum = x + y return (sum)} // Hoofdfunctie int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

Zoals we in het bovenstaande voorbeeld kunnen zien, roepen we de functie aan met de instructie int sum = add (23, 31). De geretourneerde waarde van de functie wordt opgeslagen in somvariabele.

Voordat we verder gaan, is er nog een belangrijk concept dat we moeten begrijpen over het parament. Er zijn twee soorten parameters:

Werkelijke parameter : De parameters die worden doorgegeven aan functies terwijl ze worden aangeroepen, worden de werkelijke parameter genoemd. 23 & 31 in het bovenstaande voorbeeld zijn bijvoorbeeld de feitelijke parameters.

Formele parameter : De parameters die door de functies worden ontvangen, worden formele parameters genoemd. X & y in het bovenstaande voorbeeld zijn bijvoorbeeld de formele parameters.

Laten we snel verder gaan en de verschillende manieren begrijpen om een ​​functie in C aan te roepen.

Een functie aanroepen

Er zijn twee manieren waarop we een functie kunnen aanroepen:

  • Bellen op waarde
  • Bel door middel van referentie

Bellen op waarde

Bij call by value-methode wordt de waarde van de feitelijke parameter als argument aan de functie doorgegeven. De waarde van de feitelijke parameter kan niet worden gewijzigd door de formele parameters.

In call be value-methode wordt een ander geheugenadres toegewezen aan formele en werkelijke parameters. Alleen de waarde van de werkelijke parameter wordt naar de formele parameter gekopieerd.

Voorbeeld:

#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}

Uitvoer

In het bovenstaande voorbeeld, vóór call by value-functie, is de waarde van num 24. Zodra we de functie hebben aangeroepen en de waarde hebben doorgegeven en deze binnen de functie hebben gewijzigd, wordt het 42. Wanneer we terugkomen en de waarde opnieuw afdrukken van num in de hoofdfunctie, wordt het 24.

Bel door middel van referentie

Bij aanroep door verwijzing wordt het geheugenadres van de feitelijke parameter als argument aan de functie doorgegeven. Hier kan de waarde van de feitelijke parameter worden gewijzigd door de formele parameter.

Hetzelfde geheugenadres wordt gebruikt voor zowel de feitelijke als de formele parameter. Dus als de waarde van de formele parameter wordt gewijzigd, wordt dit ook weerspiegeld door de feitelijke parameter.

In C gebruiken we pointers om call by reference te implementeren. Zoals je in het onderstaande voorbeeld kunt zien, verwacht de functie Call_By_Reference een pointer naar een geheel getal.

Nu zal deze num1 variabele het geheugenadres van de feitelijke parameter opslaan. Dus om de waarde af te drukken die is opgeslagen in het geheugenadres aangeduid met num1, moeten we de dereferentie-operator gebruiken, d.w.z. *. Dus de waarde van * num1 is 42.

De adresoperator & wordt gebruikt om het adres van een variabele van elk gegevenstype op te halen. Dus in de functie-aanroepinstructie ‘Call_By_Reference (& num)’, wordt het adres van num doorgegeven zodat num kan worden gewijzigd met zijn adres.

Voorbeeld

#include // functiedefinitie void Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Main Function 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}

Uitvoer

In dit voorbeeld is de waarde van num aanvankelijk 24, binnen de hoofdfunctie. Nadat het is doorgegeven aan de functie Call_By_Reference en de waarde is gewijzigd door de formele parameter, is deze ook gewijzigd voor de feitelijke parameter. Dit is de reden waarom wanneer we de waarde van num afdrukken na de functie, het 42 afdrukt.

Verdergaan met soorten door de gebruiker gedefinieerde functies in C

Typen door de gebruiker gedefinieerde Functie in C

Er zijn verschillende soorten door de gebruiker gedefinieerde functies op basis van het retourtype en doorgegeven argumenten.

Verdergaan zonder doorgegeven argumenten en zonder retourwaarde

1. geen argumenten doorgegeven en geen retourwaarde

Syntaxis:

functie verklaring:

void function () functie call: function () functie definitie: void function () {statements}

Voorbeeld

#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}

Verder gaan zonder argumenten maar een retourwaarde

2 Geen argumenten doorgegeven, maar een retourwaarde

Syntaxis:

functie verklaring:

int function () functieaanroep: function () functiedefinitie: int function () {statements retourneren a}

Voorbeeld:

#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', som) retourneren 0}

Verdergaan met doorgegeven argumenten maar geen retourwaarde

3 Argument geslaagd, maar geen retourwaarde

Syntaxis:

functie verklaring:

void function (int) functie oproep: functie (a) functie definitie: void function (int a) {statements}

Voorbeeld:

wat is contextfilter in tableau
#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}

Verdergaan met Argument doorgegeven en een retourwaarde

4 Argument geslaagd en een retourwaarde

Syntaxis:

functie verklaring:

int functie (int) functie aanroep: functie (a) functie definitie: int functie (int a) {statements retourneren a}

Voorbeeld

#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' , som) retourneren 0}

Laten we nu snel kijken naar de C-bibliotheekfuncties die belangrijk zijn om een ​​programma te schrijven.

C Bibliotheekfuncties

Bibliotheekfuncties zijn functies in C die vooraf zijn gedefinieerd en standaard aanwezig zijn. U hoeft alleen het specifieke header-bestand in het programma op te nemen en u kunt de functies gebruiken die in dat header-bestand zijn gedefinieerd. Elk headerbestand biedt een specifiek soort functionaliteit. De extensie van het header-bestand is .h.

Om bijvoorbeeld de printf / scanf-functies te gebruiken, moeten we stdio.h in ons programma opnemen, die functionaliteit bieden met betrekking tot standaard invoer / uitvoer.

Hieronder volgt de lijst met headerbestanden.

eenstdio.hStandaard input / output header-bestand
2slaan. hConsole input / output header-bestand
3string.hTekenreeksgerelateerde bibliotheekfuncties zoals gets (), put (), enz.
4stdlib.hAlgemene bibliotheekfuncties zoals malloc (), calloc (), exit (), etc.
5wiskunde. hAan wiskundige bewerkingen gerelateerde functies zoals sqrt (), pow (), enz.
6time.hTijdgerelateerde functies
7ctype.hKarakterverwerkingsfuncties
8stdarg.hVariabele argumentfuncties
9signaal.hSignaalverwerkingsfuncties
10setjmp.hJump-functies
elflocale.hLocale functies
12errno.hFoutafhandelingsfuncties
13beweren.hDiagnostische functies

Nadat u de bovenstaande C-functies hebt doorlopen, zou u elke functie hebben begrepen en hoe u deze in de C-taal kunt implementeren. Ik hoop dat deze blog informatief en een meerwaarde voor je is.

Hiermee zijn we aan het einde gekomen van dit artikel over ‘Functies in C’. Als je meer wilt weten, bekijk dan de , een vertrouwd online leerbedrijf. Edureka's Java J2EE- en SOA-trainings- en certificeringscursus is ontworpen om u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van deze blog en we nemen zo snel mogelijk contact met je op.