Void-datatypen
Stryg for at vise menuen
Du skal altid angive typen, fordi det er et statisk typet sprog. Kompileren skal kende den præcise type for hver variabel for at kunne allokere den korrekte mængde hukommelse og for at håndhæve typesikkerhed. Den skal også kende typerne for funktions returværdier og parametre.
Et statisk typet sprog er et, hvor datatypen for en variabel eksplicit erklæres og håndhæves af kompileren.
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 ___; }
I dette tilfælde kræver vi ikke en specifik returtype; det kunne være int, double, float eller bool. For dette scenarie er den præcise type ikke vigtig. Faktisk, hvad nu hvis vi slet ikke behøver at returnere noget?
Void som funktionens returtype
Der findes ofte funktioner, hvor det ikke ser ud til at være nødvendigt at returnere noget, såsom:
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(); }
I dette tilfælde kan vi bruge datatypen void. Datatypen void i programmering angiver fraværet af enhver værdi eller type. Den kan anvendes på mange forskellige måder, men for funktioner bruges den typisk til at angive, at en funktion ikke returnerer nogen værdi.
main.cpp
123456789101112#include <iostream> void log(std::string message) { std::cout << message; return; } int main() { log("This is a void function!"); }
Bemærk
Vi brugte nøgleordet
return, men sendte faktisk ikke nogen værdi. Nøgleordetreturnkan også udelades ivoid-funktioner. Prøv at fjerne det i eksemplet.
Void som en Pointer
Void-pegepinde (void*) er pegepinde, der ikke har en specifik datatypetilknytning. De kan pege på enhver type objekt, men du skal caste dem til den passende type, før du bruger dem. De er meget nyttige, men nogle gange svære at forstå.
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 }
I dette eksempel er ptr en void-pegepind, der peger på et heltal (num). Vi caster derefter ptr til en int*-pegepind for at få adgang til og udskrive værdien af num.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat