当前位置: 首页 > 知识库问答 >
问题:

查找char指针、int和浮点数的末尾

柯新翰
2023-03-14

我有一个函数,它将被传递一个空指针。此指针可以是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个答案

景远航
2023-03-14

我可能需要搜索空字符,并计算它距离原始指针有多少字节

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

我要怎么做才能找到int和浮动的大小呢?

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

一般来说,在这种情况下,将大小传递给函数也很方便。

 类似资料:
  • 在下面给出的代码中,我声明了一个指向int的指针,我们都知道memcpy返回一个指向目标字符串的空指针,所以如果ptr是指向int的指针,那么为什么printf(“%s”,ptr);是完全有效的,ptr毕竟不是指向char的指针。

  • 我刚开始学习C,所以这可能是一个愚蠢的问题,但它是这样的: 我试着这样做: 但不管用,我也想不出原因。 那为什么这不起作用呢?我怎么做这张支票? 大THX!

  • 当我试图打印未初始化的静态字符数组时,它会给出运行时错误(Null指针异常),而未初始化的静态int数组会给出Null值。为什么?

  • 问题内容: 据我了解,字符是单个字符,即字母, 数字 ,标点符号,制表符,空格或类似内容。因此,当我这样做时: 输出1正是我所期望的。那为什么当我这样做时: 我最终的输出是 50 吗? 问题答案: 之所以得到它,是因为它添加了char 的ASCII值。您必须先将其转换为int。

  • 我有一个程序,它运行在两个处理器上,其中一个不支持浮点运算。所以,我需要在处理器中使用定点执行浮点计算。为此,我将使用浮点仿真库。 我需要首先在支持浮点的处理器上提取浮点数的符号、尾数和指数。所以,我的问题是如何得到单精度浮点数的符号、尾数和指数。 按照此图的格式,

  • 我正在阅读Bjarne Stroustrup的“使用C进行编程原理和实践”(第二版)。在第660-661页,作者定义了一个函数如下: 稍后在中,函数被称为其中是中,是一个,是一个大小为的数组。 我不明白