【问题标题】:Finding end of char pointer, int and float查找 char 指针、int 和 float 的结尾
【发布时间】:2013-01-18 01:18:47
【问题描述】:

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

【问题讨论】:

  • 你需要一个 3r 参数,或者记录一个 int 和 float 的终止符值

标签: c casting void-pointers systems-programming


【解决方案1】:

我是否可能必须搜索空字符并计算如何 距离原始指针还有多少字节?

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

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

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

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

【讨论】:

  • 啊,我完全忽略了 int 和 float 是特定大小的事实......如果我可以发送大小,我宁愿这样做而不是我现在正在做的事情。哈。谢谢。
  • "int 和 float 一样大小"不是!!!! int可以是16bit,float不小于32(所有intel 16系统)
猜你喜欢
  • 2013-06-02
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
相关资源
最近更新 更多