Void-datatypen
Sveip for å vise menyen
Du må alltid spesifisere typen fordi det er et statisk typet språk. Kompilatoren må vite den eksakte typen til hver variabel for å tildele riktig mengde minne og for å sikre typesikkerhet. Den må også vite typene til returverdier og parametere for funksjoner.
Et statisk typet språk er et hvor datatypen til en variabel eksplisitt deklareres og håndheves av kompilatoren.
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 tilfellet kreves det ikke en spesifikk returtype; det kan være int, double, float eller bool. For dette scenariet spiller den eksakte typen ingen rolle. Faktisk, hva om vi ikke trenger å returnere noe i det hele tatt?
Void som returtype for funksjoner
Det finnes ofte funksjoner som tilsynelatende ikke trenger å returnere noe, slik 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 tilfellet kan vi bruke datatypen void. Datatypen void i programmering indikerer fravær av enhver verdi eller type. Den kan brukes på mange forskjellige måter, men for funksjoner brukes den vanligvis til å angi at en funksjon ikke returnerer noen verdi.
main.cpp
123456789101112#include <iostream> void log(std::string message) { std::cout << message; return; } int main() { log("This is a void function!"); }
Merk
Vi brukte nøkkelordet
return, men sendte faktisk ikke med noen verdi. Nøkkelordetreturnkan også utelates ivoid-funksjoner. Prøv å fjerne det i eksempelet.
Void som peker
Void-pekerne (void*) er pekere som ikke har en spesifikk datatypetilknytning. De kan peke til hvilken som helst type objekt, men du må caste dem til riktig type før de brukes. De er svært nyttige, men noen ganger vanskelige å 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 eksemplet er ptr en void-peker som peker til et heltall (num). Vi caster deretter ptr til en int*-peker for å få tilgang til og skrive ut verdien til num.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår