Thông thường void *
con trỏ được sử dụng để biểu thị con trỏ đến một loại dữ liệu không xác định. Trong trường hợp này hàm của bạn trả về một mảng các con trỏ như vậy sao cho sao đôi.
Trong C, con trỏ thường được sử dụng để tham chiếu một mảng. Ví dụ: nhiệm vụ sau đây hoàn toàn hợp pháp:
char str1[10];
char *str2 = str1;
Bây giờ khi sử dụng khoảng trống, nghĩa là thay vì char bạn có một loại biến không xác định.
Con trỏ đến loại dữ liệu không xác định rất hữu ích để viết các thuật toán chung. Ví dụ. chức năng qsort trong thư viện C chuẩn được định nghĩa là:
void qsort (void * base,
size_t num,
size_t size,
int (* comparator)
(const void *, const void *));
Thuật toán sắp xếp là chung, nhưng không biết nội dung của dữ liệu. Vì vậy, người dùng phải cung cấp một thực hiện của một so sánh có thể đối phó với nó. Thuật toán sẽ gọi bộ so sánh với hai con trỏ tới các phần tử cần so sánh. Các con trỏ này thuộc loại void *
, bởi vì hiện tại có thông tin về loại dữ liệu đang được sắp xếp.
Hãy nhìn vào chủ đề này để biết thêm ví dụ http://forums.fedoraforum.org/showthread.php?t=138213
'khoảng trống ** '= con trỏ đến một' khoảng trống *' – Mysticial
Trong trường hợp này, nó có nghĩa là "con trỏ đến một mảng các con trỏ * khoảng trống" –
@VariableLengthCoder, không đó sẽ là ' void * (* mảng) [] '.Bạn có thể có nghĩa là "con trỏ đến phần tử đầu tiên của một mảng con trỏ' void' ". –