memset()
被声明为返回void*
,始终是相同的值传递给函数的地址。
有什么用的返回值? 为什么它不返回void
?
memset()
被声明为返回void*
,始终是相同的值传递给函数的地址。
有什么用的返回值? 为什么它不返回void
?
签名与所有其他类似功能线: memcpy()
strcpy()
等。我一直认为这样做是为了使一个链调用这样的功能,以及以其他方式在表达式中使用这样的电话。
不过,我从来没有碰到过一个真实世界的情况下,我觉得必须以这种方式使用的返回值。
它可用于调用链接,如:
char a[200];
strcpy(memset(a, 0, 200), "bla");
为了使用该函数作为参数用于另一种功能,例如sprintf
谷歌搜索,看看返回什么memset的,当我遇到这个问题就来了。
我有一些代码,我测试一个值,然后如果这是真正的考验,看是否有值是零。
因为在C中没有完全可移植的方法来测试零我在中间运行memset的。
所以我的代码是:
if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )
这讲在前面的问题中列出的链接的目的,但它是这种技术使用的一个例子。
我要把它留给别人去判断,如果这是一个良好的编码与否。