c ++ - memset()返回值有什么用?

声明void返回void*,它始终与传递给函数的地址值相同。

返回值的用途是什么? 为什么不返回void

sharptooth asked 2019-09-11T10:56:33Z
4个解决方案
118 votes

它可以用于呼叫链接,如:

char a[200];
strcpy(memset(a, 0, 200), "bla");
Juraj Blaho answered 2019-09-11T10:57:21Z
33 votes

签名符合所有其他类似的功能:memcpy(),strcpy()等。我一直认为这样做是为了使一个链接调用这些函数,否则在表达式中使用这些调用。

也就是说,我从来没有遇到过现实世界的情况,我觉得有必要以这种方式使用返回值。

NPE answered 2019-09-11T10:56:55Z
12 votes

为了将该函数用作另一个函数的参数,例如sprintf

Noah answered 2019-09-11T10:57:47Z
0 votes

我在Googling看到memset返回时遇到了这个问题。

我有一些代码,我测试一个值,然后如果这是真的测试,看看一个值是否为零。

因为在C中没有完全可移植的方式来测试零,所以我必须在中间运行memset。

所以我的代码是:

if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )

这说明了前面问题中列出的链接目的,但它是这种技术用途的一个例子。

我会留给别人来判断这是不是很好的编码。

Gerard Nicol answered 2019-09-11T10:58:49Z
translate from https://stackoverflow.com:/questions/13720428/whats-the-use-of-memset-return-value