空指针(void pointers)
void 指针可以指向任意类型的数据。唯一的限制是被指向的值不能被直接引用(即不可以对它们使用解引符*),因为它的长度是不定的。
因此,必须使用类型转换操作或赋值操作来把 void 指针指向一个具体的数据类型。
#include <iostream> using namespace std; 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)); increase(&b,sizeof(b)); increase(&c,sizeof(c)); cout << (int)a << ' ' << b << ' ' << c << endl; //6 10 13 }