空指针(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
}
View Code

相关文章: