Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Void-tietotyyppi | Muut Tietotyypit ja Käsitteet
Practice
Projects
Quizzes & Challenges
Visat
Challenges
/
C++ Tietotyypit

bookVoid-tietotyyppi

Pyyhkäise näyttääksesi valikon

Tyyppi on aina määriteltävä, koska kyseessä on staattisesti tyypitetty kieli. Kääntäjän on tiedettävä jokaisen muuttujan tarkka tyyppi, jotta se voi varata oikean määrän muistia ja varmistaa tyyppiturvallisuuden. Kääntäjän on myös tiedettävä funktioiden palautusarvojen ja parametrien tyypit.

Note
Huomio

Staattisesti tyypitetyssä kielessä muuttujan tietotyyppi määritellään ja sitä valvoo kääntäjä.

main.cpp

main.cpp

copy
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 ___; }

Tässä tapauksessa emme tarvitse tiettyä paluuarvon tyyppiä; se voisi olla int, double, float tai bool. Tässä tilanteessa tarkalla tyypillä ei ole merkitystä. Entä jos emme tarvitse palauttaa mitään ollenkaan?

Void funktioiden paluuarvotyyppinä

Usein on funktioita, joiden ei näytä tarvitsevan palauttaa mitään, kuten:

main.cpp

main.cpp

copy
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(); }

Tässä tapauksessa voidaan käyttää void-tietotyyppiä. void-tietotyyppi ohjelmoinnissa ilmaisee, ettei arvoa tai tyyppiä ole. Sitä voidaan käyttää monin eri tavoin, mutta funktioissa sitä käytetään yleensä osoittamaan, ettei funktio palauta arvoa.

main.cpp

main.cpp

copy
123456789101112
#include <iostream> void log(std::string message) { std::cout << message; return; } int main() { log("This is a void function!"); }

Huom

Käytimme return-avainsanaa, mutta emme itse asiassa palauttaneet mitään arvoa. return-avainsanan voi myös jättää pois void-funktioissa. Kokeile poistaa se esimerkistä.

Void osoittimena

Void-osoittimet (void*) ovat osoittimia, joilla ei ole tiettyä tietotyyppiä. Ne voivat osoittaa mihin tahansa olioon, mutta ne täytyy tyyppimuuntaa sopivaan tyyppiin ennen käyttöä. Ne ovat erittäin hyödyllisiä, mutta joskus vaikeita ymmärtää.

main.cpp

main.cpp

copy
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 = &num; // 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 }

Tässä esimerkissä ptr on void-osoitin, joka osoittaa kokonaislukuun (num). Muunnamme sitten ptr:n int*-osoittimeksi, jotta voimme käyttää ja tulostaa num:n arvon.

question mark

Mitä tarkoittaa void funktion paluuarvotyyppinä C++:ssa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 3
some-alt