我有一个函数,它将被传递一个空指针。此指针可以是int、char或float。我知道通过关联值将传递给我的数据类型。例如,下面是我的函数的外观:
void * (int type, void * data);
如果传递给我的void指针最初是一个char类型,我将它转换回char类型,有没有办法确定与该指针关联的字节数?例如,如果我的函数按如下方式调用:
f(1, (void *)"Hello world");
我将void指针转换回char指针
char * p = (char *)data;
有没有什么方法可以计算出使用了多少字节?我可能需要搜索空字符并计算它与原始指针之间的距离吗?我需要做什么才能找到int和float的大小呢?
我可能需要搜索空字符,并计算它距离原始指针有多少字节?
是的,如果您的void*
实际上是一个char*
,这将起作用。
我要怎么做才能找到int和浮动的大小呢?
int
和float
始终保持相同的大小(取决于您的体系结构,通常为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页,作者定义了一个函数如下: 稍后在中,函数被称为其中是中,是一个,是一个大小为的数组。 我不明白