我有一个函数将传递一个 void 指针。此指针可以是 int、char 或 float。我知道将通过关联值传递给我的数据类型。例如,下面是我的函数的样子:
void * (int type, void * data);
如果传递给我的 void 指针最初是 char 类型,然后我将其转换回 char 类型,有没有办法确定与该指针关联的字节数?例如,如果我的函数调用如下:
f(1, (void *)"Hello world");
我将 void 指针转换回 char 指针
char * p = (char *)data;
有什么方法可以算出使用了多少字节?我是否可能必须搜索空字符并计算它与原始指针的距离?我还需要做什么才能找到 int 和 float 的大小?