Là con trỏ có thể giữ địa chỉ của biến bất kỳ kiểu dữ liệu (hoặc) trỏ tới biến bất kỳ kiểu dữ liệu.
Khai báo
Khai báo con trỏ void:
void *pointername;
Ví dụ: void *vp;
Truy cập - Toán tử ép kiểu (type cast) dùng để truy cập giá trị biến qua con trỏ.
Cú pháp
*((type cast) void pointer)
Ví dụ 1
int i = 10;
void *vp;
vp = &i;
printf("%d", *((int*)vp)); // ép kiểu int*
Ví dụ chương trình
Chương trình C cho void pointer:
#include <stdio.h>
main() {
int i = 10;
float f = 5.34;
void *vp;
vp = &i;
printf("i = %d", *((int*)vp));
vp = &f;
printf("f = %f", *((float*)vp));
}
Kết quả
i = 10 f = 5.34
Ví dụ 2
Chương trình C cho phép tính con trỏ trong void pointer:
#include <stdio.h>
#define MAX 20
int main() {
int array[5] = {12, 19, 25, 34, 46}, i;
void *vp = array;
for (i = 0; i < 5; i++) {
printf("array[%d] = %d\n", i, *((int*)vp + i));
}
return 0;
}
Kết quả
array[0] = 12 array[1] = 19 array[2] = 25 array[3] = 34 array[4] = 46