为什么 memchr() 将 void 指针作为输入?

拉韦伯

我目前正在重新编程一些 C 库。所以我的问题是:为什么memchr需要一个const void *s指针而不是简单的字符指针?

我看到您可能可以搜索其他内容,但是该函数实际上称为memchr,那么为什么要使用 void 指针呢?

提前致谢!

埃里克·波斯特皮希尔

C 的早期开发涉及大量将事物视为单个字节并允许程序员访问表示对象的字节。这个名字memchr反映了那段历史,现在不能轻易改变。

void被添加到语言中以提供一种类型,在某种意义上表示“有些东西在那里,但这是灵活的”。第一个参数memchr具有类型const void *,因为该例程可用于在任何类型的对象中搜索字节,而不需要主要是字符数组的对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将 void 双指针类型转换为 void,为什么?

在OpenGL中,为什么glVertexAttribPointer要求将“指针”参数作为void *传递?

为什么FreeBSD的memchr实现在其条件下增加其指针?

为什么将指向int的指针转换为void *但将指向函数的指针转换为bool?

为什么 std::atomic_fetch 将指针作为其输入参数

将void指针作为参数传递

将int转换为指针-为什么先转换为long?(如p =(void *)42;)

为什么在指针转换中需要(void *)?

为什么在将 void 指针转换为指向 char 指针的指针后取消引用会产生问题?

为什么在将未初始化的volatile指针转换为`void`时GCC会发出警告?

为什么将具有不同参数类型的函数存储到带有void *参数UB的函数指针中?

将指针传递给成员函数作为void *函数的参数

将函数转换为通用 void 指针作为函数参数

为什么将“ const type&variable”作为函数输入?

为什么Scala sortWith函数将谓词作为输入

为什么 Autoencoder 也将输入数据作为标签数据

为什么 setInterval 方法将 10 作为输入变量?

为什么将Reactor Mono <Void>识别为空Mono?

为什么将CompletableFuture.allOf声明为CompletableFuture <Void>?

为什么将char **(或任何T **)设为void **无效?

为什么将signal()的结果强制转换为(void)?

将指针转换为void

使用 memchr 计算输入行数失败

为什么struct给出错误的sizeof和void指针

为什么从void指针*强制转换的数组无法迭代for循环?

允许强制转换为void(非指针),为什么?

为什么不能对void指针进行算术运算?

为什么不能将函数指针转换为(void *)?

为什么void指针与参考值不同?