memset() 返回值有什么用?

What's the use of memset() return value?

本文关键字:什么 返回值 memset      更新时间:2023-10-16

memset()被声明为返回void*,该值始终与传递给函数的地址相同。

返回值有什么用?为什么不返回void

它可以用于调用链接,例如:

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

签名与所有其他类似功能一致:memcpy()strcpy()等。我一直认为这样做是为了能够将调用链接到此类函数,并在表达式中使用此类调用。

也就是说,我从未遇到过在现实世界中,我会觉得有必要以这种方式使用返回值。

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

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

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

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

所以我的代码是:

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

这说明了前面问题中列出的链接目的,但它是使用该技术的示例。

我会把它留给其他人来判断这是否是好的编码。