Тип Даних Void
Свайпніть щоб показати меню
Завжди необхідно вказувати тип, оскільки це мовa зі статичною типізацією. Компілятору потрібно знати точний тип кожної змінної, щоб виділити правильний обсяг пам'яті та забезпечити типобезпечність. Також необхідно знати типи значень, що повертаються функціями, і параметрів.
Мова зі статичною типізацією — це мова, у якій тип даних змінної явно оголошується та контролюється компілятором.
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 ___; }
У цьому випадку не потрібно вказувати конкретний тип повернення — це може бути int, double, float або bool. Для цієї ситуації точний тип не має значення. Насправді, що робити, якщо взагалі не потрібно нічого повертати?
Void як тип повернення функції
Часто зустрічаються функції, яким не потрібно нічого повертати, наприклад:
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(); }
У цьому випадку можна використовувати тип даних void. Тип даних void у програмуванні позначає відсутність будь-якого значення або типу. Його можна застосовувати по-різному, але для функцій зазвичай використовується для вказівки, що функція не повертає жодного значення.
main.cpp
123456789101112#include <iostream> void log(std::string message) { std::cout << message; return; } int main() { log("This is a void function!"); }
Примітка
Ми використали ключове слово
return, але фактично не передали жодного значення. Ключове словоreturnтакож можна опустити у функціях з типомvoid. Спробуйте видалити його у прикладі.
Void як вказівник
Вказівники типу void (void*) — це вказівники, які не мають конкретного пов’язаного з ними типу даних. Вони можуть вказувати на об’єкти будь-якого типу, але перед використанням їх потрібно привести до відповідного типу. Вони дуже корисні, але іноді важкі для розуміння.
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 }
У цьому прикладі ptr — це вказівник типу void, який вказує на ціле число (num). Далі ми приводимо ptr до вказівника типу int*, щоб отримати доступ до значення num та вивести його.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат