查找char指针,int和float的结尾

时间:2013-02-03 00:27:29

标签: c casting void-pointers systems-programming

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

1 个答案:

答案 0 :(得分:2)

  

我是否可能必须搜索空字符并计算方式   它距离原始指针多少个字节?

是的,如果您的void*实际上是char*,这将有效。

  

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

intfloat始终具有相同的大小(取决于您的体系结构,通常为32或64位。使用sizeof运算符来确定确切的大小)。如果你将一个int数组作为void*传递,你无法找到它的长度。

通常在这些情况下,将大小传递给你的函数也很有意义。