- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在重新编写一些 C 库。所以我的问题是:为什么 memchr
采用 const void *s
指针而不是简单的字符指针?
我知道您可能会搜索其他内容,但该函数的字面意思是 memchr,所以为什么要使用 void 指针?
提前致谢!
最佳答案
C 的早期开发涉及大量将事物视为单独的字节并允许程序员访问表示对象的字节。 memchr
这个名字反射(reflect)了那段历史,现在不能轻易改变。
void
被添加到语言中以提供一种类型,从某种意义上说,“有些东西在那里,但这是灵活的。” memchr
的第一个参数具有 const void *
类型,因为该例程可用于在任何类型的对象中搜索字节,而不一定是主要为数组的对象字符数。
关于c - 为什么 memchr() 将 void 指针作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72014897/
问题:如果你这样做 if ( ptr = memchr( str1, '4', sizeof(str1) ) ) { // do stuff using ptr } 然后你每次都会输入并做“东
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我编写了一个程序来计算 stdin 给出的输入行数: #include #include #include #include #define BUFF_SIZE 8192 #define R
我尝试理解并重写 memchr 函数,但我在代码开头发现了一些奇怪的东西。 我们可以读到: #include "libc.h" #include void *my_memchr(void co
我正在尝试在二进制文件中查找 0x0D0A。但是 strchr 在找到 0x00 时停止并且我没有找到正确的位置。 请告诉我为什么它不起作用 #include #include #include
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
背景:我正在尝试创建一个纯 D 语言实现的功能,大致相当于 C's memchr但使用数组和索引而不是指针。原因是 std.string 将与编译时函数评估一起使用。对于那些不熟悉 w/D 的人,如果
我试图解决的实际问题是搜索出现的位模式(110xxxxx、1110xxxx、11110xxx)表示UTF-8中多字节字符的开始。 我希望找到速度与 memchr() 类似的东西,但没有找到任何东西。我
我正在尝试解析格式类似于 1-3,5-7 的字符串。我需要阅读 1,3 和 5,7。 我在做什么 char *dup_string; dup_string = strdup(data); tok =
我正在使用 Visual Studio 2008。 在 C++ 中,我可以使用 memchr 在一维数组中搜索元素。 char* pStart, char* pEnd; //find first a
除了额外的参数之外,memchr() 和 strchr() 之间的实际区别是什么?你什么时候使用其中一种或另一种?如果解析一个大文件(理论上来说),用 memchr() 替换 strchr() 会有更
有人可以帮我解决这个问题吗?如果名称中存在字母,我正在尝试检查每个目录条目。显然这是行不通的。我的主要问题是我在使用 namelist[n]->d_name 作为内存时是否正确使用了 memchr?
在 C11 和 C++111 中定义了以下行为吗? bool has4() { char buf[10] = {0, 1, 2, 4}; return memchr(buf, 4,
我目前正在重新编写一些 C 库。所以我的问题是:为什么 memchr 采用 const void *s 指针而不是简单的字符指针? 我知道您可能会搜索其他内容,但该函数的字面意思是 memchr,所以
我目前正在重新编写一些 C 库。所以我的问题是:为什么 memchr 采用 const void *s 指针而不是简单的字符指针? 我知道您可能会搜索其他内容,但该函数的字面意思是 memchr,所以
FreeBSD's generic implementation of memchr做: void * memchr(const void *s, int c, size_t n) { if
我在 mac os x 上使用 memchr() 时遇到溢出的问题。 这是我的测试代码: #include #include int main(void){ char *content="
下面的函数使用int作为第二个参数类型, memchr(const void *buf, int ch, size_t count); 尽管它用于字符 类型。为什么函数定义为使用int 作为char
自从我在标准 头文件中无缘无故地收到此错误以来已经有一段时间了。谷歌搜索带来了许多答案,但没有一个有效。 最佳答案 好的,我自己修好了。这是一个愚蠢的错误!我在一个库项目中有一个名为“String.h
我正在阅读 sehe's answer至 this question并且惊讶地看到 sehe 发现使用 std::memchr 的手写循环比使用 std::count 快 3 倍以上 (看评论)。使用
我是一名优秀的程序员,十分优秀!