C is een uitgeklede taal. Het geeft je het blanke metaal. Het bevat niet eens functies om vanaf een toetsenbord te lezen of naar een scherm te schrijven. Als je dat wilt, moet je het bouwen.
Alles wat verder gaat dan de absolute basis leeft in bibliotheken.
Je kent de stdio -bibliotheek. Het verwerkt standaard invoer en uitvoer. Er zijn anderen voor wiskunde. Behandeling van strings. Manipulatie van de tijd. Ze bestaan, zodat u niet elke keer dat u aan een nieuw project begint, het wiel opnieuw hoeft uit te vinden.
Maar waarom stoppen bij wat de standaard biedt?
Door code in bibliotheken te plaatsen, wordt deze herbruikbaar. Hiermee kunt u enorme programma’s opsplitsen in beheersbare modules. Makkelijker te testen. Gemakkelijker te debuggen. U kunt code uit uw oude projecten halen en deze in nieuwe projecten plaatsen zonder logicablokken te kopiëren en te plakken.
Laten we eens kijken hoe we dit kunnen doen.
Logica extraheren in functies
Neem een standaard C-programma dat een array met willekeurige getallen vult en sorteert. Hier is de onbewerkte code:
Deze code doet drie dingen. Het vult een array met willekeurige getallen. Het sorteert ze met behulp van een bellensoort. Het resultaat wordt afgedrukt.
Om een herbruikbare bibliotheek te maken, moeten we de sorteerlogica isoleren.
Stap één: Generaliseer de sortering
Extraheer de bellensorteercode. Maak er een functie van.
Omdat de array a en de constante MAX globaal zijn, heeft de functie aanvankelijk geen parameters nodig. Er hoeft ook geen waarde te worden geretourneerd. Gebruik gewoon lokale variabelen voor x, y en t.
Update nu main om deze functie aan te roepen in plaats van de inline-lus uit te voeren.
Het werkt. Maar het is nog steeds gebonden aan een mondiale array.
Stap twee: geef de array door
We kunnen de sorteerfunctie echt generiek maken. Geef de array zelf door als parameter.
De handtekening verandert in:
Dit vertelt de compiler dat hij een array met gehele getallen van elke grootte moet accepteren. De body van de functie blijft precies hetzelfde. Je werkt gewoon de aanroep bij in main :
Merk je iets vreemds op? We passeren a, niet &a.
Hoewel de sorteerfunctie de array wijzigt, hebben we hier de operator adres-van niet nodig. Het lijkt contra-intuïtief als je gewend bent aan voorbijgaande talen. Je vraagt je misschien af waarom dit werkt zonder expliciete verwijzingen in de oproep.
Het komt omdat in C arrays vervallen tot pointers wanneer ze worden doorgegeven aan functies. De functie ontvangt een verwijzing naar het begin van de array in het geheugen. Daarom kan het de originele gegevens wijzigen.
Het begrijpen van dit onderscheid is de toegangspoort tot het beheersen van aanwijzingen. Zonder dit zijn C-bibliotheken slechts statische codeblokken. Hiermee bouw je modulaire, draagbare systemen.






















