Trong C++, từ khóa void
được sử dụng để chỉ rằng một hàm hoặc một biến không có giá trị trả về.
Các bài viết liên quan:
- Sử dụng
void
trong khai báo hàm: Khi khai báo một hàm có kiểu trả về làvoid
, nó có nghĩa là hàm đó không trả về giá trị nào cả. Ví dụ:
#include <iostream> using namespace std; void print_hello() { cout << "Hello, world!" << endl; } int main() { print_hello(); return 0; }
- Sử dụng
void
trong khai báo biến: Khi khai báo một biến có kiểuvoid
, nó không chứa giá trị nào cả. Ví dụ:
void* ptr;
Với ví dụ trên, biến ptr
không chứa giá trị nào cả, nó chỉ là một con trỏ trỏ đến vùng nhớ không xác định.
Lưu ý rằng biến void
khác với kiểu dữ liệu void
trong hàm. Trong hàm nó nghĩa là không có giá trị trả về, còn trong biến thì nó không chứa giá trị nào.
Để sử dụng void
trong hàm, có thể sử dụng nó để khai báo kiểu trả về của hàm, hoặc nó cũng có thể được sử dụng để khai báo kiểu của một tham số trong hàm.
- Sử dụng
void
để khai báo kiểu trả về của hàm: Khi khai báo một hàm có kiểu trả về làvoid
, nó có nghĩa là hàm đó không trả về giá trị nào cả. Ví dụ:
void print_hello() { cout << "Hello, world!" << endl; }
- Sử dụng
void
để khai báo kiểu của một tham số trong hàm: Khi khai báo một tham số có kiểuvoid
, nó có nghĩa là tham số đó không chứa giá trị nào cả. Ví dụ:
void function(void* ptr) { // code }
Trong ví dụ trên, tham số ptr
của hàm function
là một con trỏ chứa địa chỉ của một vùng nhớ không xác định.
Trong C++11, người ta có thể sử dụng nullptr
để thay thế cho void*
void function(nullptr_t ptr) { // code }
Sử dụng void*
và nullptr
chỉ được sử dụng trong trường hợp đặc biệt và cần phải cẩn thận khi sử dụng. Trong thông thường, người ta sẽ sử dụng kiểu dữ liệu khác như int*
, double*
, char*
và string*
để làm việc với con trỏ.
Các kiểu dữ liệu void*
và nullptr
có thể được sử dụng để tham chiếu đến bất kỳ kiểu dữ liệu nào, vì vậy nó có thể gây ra rủi ro về tương thích và an toàn dữ liệu trong một số trường hợp đặc biệt.