memset()返回值有什么用?

时间:2012-12-05 09:54:42

标签: c++ c memset

声明

memset()返回void*,它始终与传递给函数的地址相同。

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

4 个答案:

答案 0 :(得分:118)

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

char a[200];
strcpy(memset(a, 0, 200), "bla");

答案 1 :(得分:33)

签名与所有其他类似函数一致:memcpy()strcpy()等。我一直认为这样做是为了让一个人能够对这些函数进行链接调用,并以其他方式使用这些函数在表达式中。

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

答案 2 :(得分:12)

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

答案 3 :(得分:0)

当谷歌搜索看到什么memset返回时,我遇到了这个问题。

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

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

所以我的代码是:

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

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

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