✨Void (kiểu dữ liệu)

Void (kiểu dữ liệu)

Trong nhiều ngôn ngữ lập trình bắt nguồn từ C và Algol68, kiểu void (tiếng Anh: void type) là một kiểu kết quả của hàm nếu hàm này không trả về bất kì kết quả (giá trị) nào. Những hàm như thế thường được gọi trong chương trình vì những hiệu ứng biên của chúng. Các kiểu void có cùng mục đích với các cấu trúc cú pháp xác định các subroutine (đoạn chương trình con) trong Visual Basic và các procedure (thủ tục) trong ngôn ngữ lập trình Pascal. Trong những trường hợp như vậy, kiểu void có mục đích tương tự như kiểu unit (kiểu đơn vị) từ các ngôn ngữ lập trình hàm; tuy nhiên, có nhiều sự khác biệt trong các cách dùng được cho phép, như kiểu void được lấy làm kiểu rỗng và không có giá trị. Để dễ so sánh, xin hãy xem thêm đề mục Kiểu unit#Trong các ngôn ngữ lập trình.

Ngôn ngữ C và C++ cũng cung cấp con trỏ chỉ kiểu void (được đặc tả bởi void *), nhưng đây là một khái niệm không có liên quan. Các biến kiểu này là các con trỏ chỉ đến dữ liệu của một kiểu chưa được xác định, vì thế ở ngữ cảnh này (nhưng không phải trong những ngữ cảnh khác) void đóng vai trò như một kiểu vạn năng hay kiểu top. Một chương trình có thể chuyển đổi một con trỏ chỉ đến kiểu bất kì của dữ liệu thành một con trỏ chỉ đến kiểu void và quay ngược lại kiểu ban đầu mà không làm mất thông tin, điều này khiến cho các con trỏ trở nên hữu ích trong các hàm đa hình (polymorphic function) (chú ý điều này không thật đúng đối với các con trỏ hàm vì các hàm không phải là dữ liệu).

Lịch sử

Trong số những ngôn ngữ lập trình hiện đại, từ khóa void lần đầu tiên xuất hiện trong C++ để hỗ trợ cho khái niệm con trỏ được tổng quát hóa. Tuy nhiên, nhờ sự vay mượn nhanh chóng từ C++, tài liệu tiêu chuẩn đầu tiên chứa từ khóa void đã trở thành chuẩn của ngôn ngữ C và đã được ANSI công bố vào năm 1989. Trong phạm vi ngôn ngữ C++, void đã được chuẩn hóa vào năm 1998.

Sau này, từ khóa void và những cấu trúc ngôn ngữ liên quan đến nó đã được thừa kế bởi các ngôn ngữ Java, C# và D.

Cú pháp

Ngữ nghĩa

Ngôn ngữ C trước khi có kiểu void

Void trong các ngôn ngữ lập trình C và C++

Một hàm có kiểu kết quả void kết thúc hoạt động bằng cách hoặc chạm tới điểm kết thúc của hàm hoặc thực hiện một lệnh trả về mà không có giá trị trả về. Kiểu void có thể cũng xuất hiện như là đối số (argument) duy nhất của một nguyên mẫu hàm (function prototype) nhằm xác định là hàm không có tham số nào cả. Chú ý rằng, mặc dù có tên, nhưng trong tất cả những trường hợp này, kiểu void được dùng làm kiểu unit, chứ không làm số 0 (zero) hay kiểu đáy, thậm chí không giống như một kiểu unit thực sự là kiểu đơn nhất, kiểu void bao gồm một tập hợp rỗng các giá trị, và ngôn ngữ không cung cấp bất cứ cách nào để khai báo một đối tượng hoặc biểu diễn một giá trị với kiểu void.

Trong những phiên bản sớm nhất của C, các hàm không có kết quả xác định đã được mặc định kiểu trả về của int và các hàm không có đối số đã dễ dàng có các danh sách đối số rỗng. Các con trỏ chỉ dữ liệu không được định kiểu đã được khai báo như là các số nguyên (integer) hoặc con trỏ chỉ char. Một vài trình biên dịch C lúc ban đầu đã có đặc điểm mà ngày nay bị xem là phiền toái, đó là phát sinh cảnh báo cho bất kì lời gọi hàm nào không sử dụng giá trị trả về của hàm. Mã cũ đôi khi vứt bỏ những lời gọi hàm như vậy để tránh kết liễu cảnh báo này. Lúc Bjarne Stroustrup bắt đầu công trình của ông ấy trên C++ vào 1979-1980, void và con trỏ void đã từng là một phần của phương ngữ ngôn ngữ C được hỗ trợ bởi các trình biên dịch bắt nguồn từ AT&T.

Việc sử dụng tường minh void và việc không cho các đối số ở trong một nguyên mẫu hàm có các ngữ nghĩa khác nhau trong C và C++, và được chi tiết hóa trong bảng sau đây:

Tuy nhiên, một nguyên mẫu C không lấy các đối số, ví dụ void f() ở trên, đã bị phản đối trong C99.

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong nhiều ngôn ngữ lập trình bắt nguồn từ C và Algol68, **kiểu void** (tiếng Anh: _void type_) là một kiểu kết quả của hàm nếu hàm này không trả về bất kì kết quả
Trong ngành điện toán, khái niệm **con trỏ rỗng** chỉ một biến con trỏ có một giá trị định sẵn khiến cho nó không trỏ được tới bất kỳ một đối tượng chính tắc nào.
Ngôn ngữ lập trình C có một hệ thống mở rộng cho việc **khai báo các biến của các kiểu khác nhau**. Những quy tắc dành cho các kiểu phức tạp có thể gây nhầm
**Cây tìm kiếm nhị phân** (viết tắt tiếng Anh: BST - _Binary Search Tree_) là một cấu trúc dữ liệu rất thuận lợi cho bài toán tìm kiếm. Mỗi cây tìm kiếm nhị phân đều
Trong lập trình máy tính, **kiểu trả về** (_return type_ hay _result type_) xác định và ràng buộc kiểu dữ liệu của giá trị trả về từ một chương trình con hay phương thức (_method_).
Trong việc lập trình, các ngôn ngữ lập trình thường được coi là **kiểu yếu** hoặc **kiểu mạnh**. Nói chung thì các khái niệm này không có định nghĩa chính xác cụ thể. Thực ra,
Một **lỗ rỗng** là một lỗ chân không trong một vật liệu tổng hợp. Một lỗ rỗng thông thường được tạo ra do sự không hoàn hảo trong quá trình xử lý vật liệu và
Đây là danh sách các thuật ngữ tìm thấy trong lập trình hướng đối tượng. Một số có liên quan đến lập trình hướng đối tượng và một số thì không. Lưu ý rằng, các
**Cú pháp ngôn ngữ C++** là tập hợp các quy tắc nhằm xác định cách thức viết và dịch trong ngôn ngữ lập trình C++. Vì C++ là ngôn ngữ được thiết kế
**Cú pháp ngôn ngữ (lập trình) C** là tập hợp các quy tắc nhằm xác định cách thức để viết và dịch trong ngôn ngữ lập trình C. :Thí dụ:
 // Dòng này sẽ
**C++** (**C Plus Plus**, **CPP,** IPA: /siː pləs pləs/) là một ngôn ngữ lập trình đa năng bậc cao (high-level) được tạo ra bởi Bjarne Stroustrup như một phần mở rộng của ngôn ngữ lập
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
**Ngôn ngữ trung gian chung **hoặc **Ngôn ngữ trung gian dùng chung** (**Common Intermediate Language - CLI**), là ngôn ngữ lập trình có thể đọc được của con người ở mức thấp nhất được xác
**C#** (**C Sharp**, đọc là _"xi-sáp"_) là một ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kế hoạch .NET của họ.
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
Class trong **C++** là khái niệm được người dùng định nghĩa như một kiểu dữ liệu đơn giản hay một cấu trúc dữ liệu, được khai báo bằng từ khóa **class, **nó chứa các biến
Trong khoa học máy tính, **reflection** (có thể dịch là "phản tỉnh", "tự xét mình") là việc tiến trình có khả năng xem xét, nội quan, và sửa đổi kết cấu cùng với hành trạng
**Flyweight** là một mẫu thiết kế phần mềm. Khi nhiều đối tượng (objects) phải được xử lý mà chương trình không thể chịu nổi một lượng dữ liệu khổng lồ, thì cần dùng flyweight. Trong
Trong lập trình máy tính, **mô thức async/await** là một tính năng cú pháp của nhiều ngôn ngữ lập trình, cho phép cấu trúc nên hàm 'bất đồng bộ, non-blocking' theo lối y hệt ở
**Mục đích** Định nghĩa và bao bọc các thuật toán có cùng mục đích trong những lớp có giao diện chung. Làm cho sự thay đổi thuật toán trở nên linh động và độc lập
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
**D** là một ngôn ngữ lập trình hệ thống hướng đối tượng, dùng câu lệnh, đa mẫu hình do Walter Bright của Digital Mars tạo ra và phát hành năm 2001. Quá trình thiết kế
Theo thuyết Vụ Nổ Lớn, [[vũ trụ bắt nguồn từ một trạng thái vô cùng đặc và vô cùng nóng (điểm dưới cùng). Một lý giải thường gặp đó là không gian tự nó đang
**Sắp xếp nhanh** (_Quicksort_), còn được gọi là sắp xếp kiểu phân chia (_part sort_) là một thuật toán sắp xếp phát triển bởi C.A.R. Hoarec sắp thành hai danh sách con. Khác với sắp
liên_kết=https://en.wikipedia.org/wiki/File:Bubble-sort-example-300px.gif|nhỏ|300x300px|**Một ví dụ về sắp xếp nổi bọt. Bắt đầu từ vị trí đầu tiên của danh sách (bên trái), so sánh các cặp số với nhau, nếu không đúng thứ tự nhỏ-lớn thì đảo
Trong toán học và trong khoa học điện toán, **hệ thập lục phân** (hay **hệ đếm cơ số 16**, tiếng Anh: _hexadecimal_), hoặc chỉ đơn thuần gọi là thập lục, là một hệ đếm có
**Vũ trụ** bao gồm tất cả các vật chất, năng lượng và không gian hiện có, được xem là một khối bao quát. Vũ trụ hiện tại chưa xác định được kích thước chính xác,
**_Minecraft Dungeons_** là một trò chơi điện tử nhập vai hành động được phát triển bởi Mojang Studios, được chuyển sang các hệ máy cầm tay bởi Double Eleven và được phát hành bởi Xbox
**Các nhân vật chính và lặp lại** từ loạt trò chơi khoa học quân sự _StarCraft_ được liệt kê dưới đây, được tổ chức bởi các loài tương ứng và các phe phổ biến nhất
thumb|[[Max Schreck vai Bá tước Orlok trong bộ phim _Nosferatu_ (1922). Nhà phê bình kiêm nhà sử học Kim Newman cho rằng đây là bộ phim thiết lập khuôn mẫu cho phim kinh dị.]] thumb|Chiếc
**Dragon Mania Legends** (Hay còn được gọi tắt là **DML**) là một trò chơi điện tử theo thể loại thiết kế trang trại, huấn luyện rồng và sử dụng các kĩ năng, chiến thuật để
**_Final Fantasy III_** là trò chơi nhập vai kỳ ảo do Square phát triển và phát hành cho hệ máy Family Computer. Đây là sản phẩm thứ ba trong series _Final Fantasy_ được phát hành
**Dragon Quest Dai no Daibōken** (DRAGON QUEST -ダイの大冒険-, ドラゴンクエスト ダイのだいぼうけん) là một bộ manga do Sanjou Riku viết nội dung và Inada Hiroshi vẽ minh họa. Truyện được sáng tác dựa trên game Dragon quest
**_Quỷ quyệt 2_** (nhan đề gốc tiếng Anh: **_Insidious: Chapter 2_**) là phim kinh dị Mỹ do James Wan làm đạo diễn và được ra mắt vào năm 2013. Phim là phần nối tiếp phần
**_Honkai Impact 3rd_** là một game mobile nhập vai 3D hành động miễn phí được phát triển bởi miHoYo. Đây là mục thứ ba trong _sê-ri Honkai_ và là người kế thừa tinh thần của