Void-datyp
Svep för att visa menyn
Du måste alltid ange typen eftersom det är ett statisk typat språk. Kompilatorn behöver känna till den exakta typen för varje variabel för att kunna allokera rätt mängd minne och upprätthålla typsäkerhet. Den behöver också känna till typerna för funktionsreturvärden och parametrar.
Ett statisk typat språk är ett där datatypen för en variabel uttryckligen deklareras och upprätthålls av kompilatorn.
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 det här fallet krävs ingen specifik returtyp, det kan vara int, double, float eller bool. För detta scenario spelar den exakta typen ingen roll. Faktum är, vad händer om vi inte behöver returnera något alls?
Void som returtyp för funktioner
Det finns ofta funktioner som inte verkar behöva returnera något, till exempel:
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 det här fallet kan vi använda datatypen void. Datatypen void i programmering anger avsaknad av värde eller typ. Den kan användas på många olika sätt, men för funktioner används den vanligtvis för att indikera att en funktion inte returnerar något värde.
main.cpp
123456789101112#include <iostream> void log(std::string message) { std::cout << message; return; } int main() { log("This is a void function!"); }
Obs
Vi använde nyckelordet
returnmen skickade faktiskt inte med något värde. Nyckelordetreturnkan också utelämnas ivoid-funktioner. Prova att ta bort det i exemplet.
Void som pekare
Void-pekare (void*) är pekare som inte har någon specifik datatyp kopplad till sig. De kan peka på vilken typ av objekt som helst, men du måste typomvandla dem till rätt typ innan de används. De är mycket användbara men ibland svåra att förstå.
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 detta exempel är ptr en void-pekare som pekar på ett heltal (num). Vi typomvandlar sedan ptr till en int*-pekare för att komma åt och skriva ut värdet av num.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal