Con trỏ không kiểu
Con trỏ không kiểu là một loại con trỏ đặc biệt. Nó có thể trỏ tới bất kì loại dữ
liệu nào, từ giá trị nguyên hoặc thực cho tới một xâu kí tự. Hạn chế duy nhất
của nó là dữ liệu được trỏ tới không thể được tham chiếu tới một cách trực tiếp
(chúng ta không thể dùng toán tử tham chiếu * với chúng) vì độ dài của nó là
không xác định và vì vậy chúng ta phải dùng đến toán tử chuyển kiểu dữ liệu
hay phép gán để chuyển con trỏ không kiểu thành một con trỏ trỏ tới một loại
dữ liệu cụ thể.
Một trong những tiện ích của nó là cho phép truyền tham số cho hàm mà không
cần chỉ rõ kiểu
// integer increaser
#include <iostream.h>
void increase (void* data, int type)
{
switch (type)
{
case sizeof(char) : (*((char*)data))++; break;
case sizeof(short): (*((short*)data))++; break;
case sizeof(long) : (*((long*)data))++; break;
}
}
int main ()
{
char a = 5;
short b = 9;
long c = 12;
increase (&a,sizeof(a));