0

我有一个函数将传递一个 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 的大小?

4

1 回答 1

2

我是否可能必须搜索空字符并计算它与原始指针的距离?

是的,如果您void*实际上是一个,char*这将起作用。

我还需要做什么才能找到 int 和 float 的大小?

int并且float始终保持相同的大小(这取决于您的架构,通常是 32 位或 64 位。使用sizeof运算符来确定确切的大小)。如果您要传递一个 int 数组,因为void*您无法找到它的长度。

通常在这些情况下,也可以将大小传递给您的函数。

于 2013-02-03T00:32:12.810 回答