Void Gegevenstype
Veeg om het menu te tonen
Het type moet altijd worden gespecificeerd omdat het een statisch getypeerde taal is. De compiler moet het exacte type van elke variabele kennen om de juiste hoeveelheid geheugen toe te wijzen en typeveiligheid af te dwingen. Ook moet het de types van functieresultaten en parameters weten.
Een statisch getypeerde taal is een taal waarin het gegevenstype van een variabele expliciet wordt gedeclareerd en door de compiler wordt afgedwongen.
main.cpp
12345678910#include <iostream> // Let's consider a simple example. // Imagine you need to create a function that logs something in console. // What type should it return? ___ log(std::string message) { std::cout << message; return ___; }
In dit geval is een specifiek retourtype niet vereist; dit kan int, double, float of bool zijn. Voor dit scenario maakt het exacte type niet uit. Maar wat als we helemaal niets hoeven terug te geven?
Void als functieretourtype
Er zijn vaak functies waarbij het lijkt alsof er niets hoeft te worden geretourneerd, zoals:
main.cpp
12345678// Outputting information in console ___ log(std::string message) { std::cout << message; } // Updating values of variables ___ update(int& variable, int new_value) { variable = new_value; } // Calling another function ___ closeFile(std::fstream& file) { file.close(); }
In dit geval kunnen we het gegevenstype void gebruiken. Het gegevenstype void in programmeren geeft de afwezigheid van een waarde of type aan. Het kan op verschillende manieren worden gebruikt, maar bij functies wordt het meestal gebruikt om aan te geven dat een functie geen waarde retourneert.
main.cpp
123456789101112#include <iostream> void log(std::string message) { std::cout << message; return; } int main() { log("This is a void function!"); }
Opmerking
We hebben het sleutelwoord
returngebruikt, maar geen waarde doorgegeven. Het sleutelwoordreturnkan ook worden weggelaten invoid-functies. Probeer het te verwijderen in het voorbeeld.
Void als Pointer
Void-pointers (void*) zijn pointers zonder een specifiek geassocieerd gegevenstype. Ze kunnen naar elk type object verwijzen, maar moeten naar het juiste type worden gecast voordat ze gebruikt kunnen worden. Ze zijn zeer nuttig, maar soms lastig te begrijpen.
main.cpp
1234567891011121314#include <iostream> int main() { int num = 10; // Here we are creating a void pointer // Now it can point to any variable of any data type // You can try changing the type of `num` from `int` to `float` void* ptr = # // To use this pointer, we need to cast it to the appropriate type // VVV int* intPtr = static_cast<int*>(ptr); std::cout << *intPtr << std::endl; // Output: 10 }
In dit voorbeeld is ptr een void-pointer die verwijst naar een integer (num). Vervolgens casten we ptr naar een int* pointer om de waarde van num te benaderen en af te drukken.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.