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

我知道你可能可以搜索其他东西,但是这个函数的字面意思是memchr,那么为什么要使用空指针呢?

提前谢谢!

推荐答案

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

void被添加到语言中,以提供一种类型,从某种意义上说,它代表"某种东西存在,但这是灵活的"memchr的第一个参数的类型为const void *,因为 routine 可用于搜索任何类型的对象中的字节,而不必搜索主要是字符数组的对象.

C++相关问答推荐

如果实际的syscall是CLONE(),那么为什么strace接受fork()呢?

如何在C中只使用一个带双方括号([i][j])访问语法的malloc来分配动态大小的2d数组?

在#include中使用C宏变量

LibpCap禁用监视器模式(C、MacOS)

C中函数类型的前向声明

Clang警告称,`ffi_type`与`sizeof`不兼容

1处的解析器错误:yacc语法的语法错误

FRIDA-服务器成为端口扫描的目标?

在libwget中启用Cookie会导致分段故障

致命错误:ASM/rwan ce.h:没有这样的文件或目录.符号链接还不够

GCC奇怪的行为,有fork 和印花,有换行符和不换行符

如何使用libgpio(d)为Raspberry Pi编译C程序?

正数之和是负数

Valgrind用net_pton()抱怨

存储和访问指向 struct 的指针数组

C:面筋蛋白';为什么不刷新窗口?

如何在Rust中处理C的longjmp情况?

使用替代日历打印日期

malloc 属性不带参数

M1 Mac 上的 jmp_buf 如何解码?