C语言标准库函数原型设计

最近试着自己实现一些C库中的函数,于是参考了标准库(我用的是mingw)头文件中的函数声明,发现自己对标准库中函数原型设计存在一些不解的地方。
例如,在string.h中,有如下声明:
1. char* strchr(const char*, int);
该函数是在一个字符串中查找字符首次出现的位置,那么第二个参数为什么是int类型而不是char类型?
2. void* memset(void*, int, size_t);
memset是逐字节操作的,理论上第二个参数设为char类型就足够了,那么函数第二个参数为什么要设置为int类型?

库作者的基本考虑是什么?

1个回答

这都是 有历史原因的 你自己实现 就没必要 一定和标准库一样 怎么合理 怎么来

hijack00
hijack00 标准库中有些函数原型设计是设计者别有用心的,例如getchar返回int而不是char,是为了考虑EOF的情况;再如strcpy等函数返回一个指针是为了实现链式调用,等等。我比较感兴趣的是对于上面那两个函数,库作者的设计初衷是什么,所以发出来和大家一起讨论讨论
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问