3.9.1 void – kiểu dữ liệu đặc biệt

Chúng ta đã biết rằng có một kiểu dữ liệu tên là void trong một số ví dụ ở những bài trước. Chúng ta dùng nó để chỉ ra rằng một hàm không có kết quả trả về hoặc một hàm không cần tham số đầu vào.

Ví dụ khai báo hàm sau:

có nghĩa là hàm này sẽ được gọi mà không cần tham số và không trả về kết quả. Chúng ta sẽ gọi hàm này như sau:

Mặc dù thực tế, kiểu void không đại diện cho bất kỳ giá trị hữu ích nào nhưng bạn có thể khai báo các con trỏ kiểu void, như trong ví dụ sau →

Bạn có thể hỏi làm thế nào để sử dụng một con trỏ trỏ vào một cái không là cái nồi gì cả, và sau đó lại hỏi tại sao có một con trỏ ngu vãi như vậy ?. Loại con trỏ này, kiểu void *, được gọi là con trỏ vô định hình để nhấn mạnh thực tế là nó có thể trỏ tới bất kỳ giá trị nào của bất kỳ kiểu dữ liệu nào. Điều này có nghĩa là con trỏ kiểu void * không thể dùng trực tiếp với toán tử dereference, vì vậy bạn không được viết kiểu như thế này:

Tuy nhiên, các con trỏ kiểu void * rất hữu ích khi bạn cần có một con trỏ, nhưng không biết nó có thể được sử dụng trong tương lai như thế nào. Ngay khi nó trở nên rõ ràng, các con trỏ có thể dễ dàng được chuyển đổi thành một con trỏ của kiểu dữ liệu khác.