memset()
声明返回void*
的值始终与传递给函数的地址相同。
返回值有什么用?为什么不返回void
?
memset()
声明返回void*
的值始终与传递给函数的地址相同。
返回值有什么用?为什么不返回void
?
strcat()
?有时,标准功能是它们被指定为的功能,而不是其应有的功能。
Answers:
它可以用于呼叫链接,例如:
char a[200];
strcpy(memset(a, 0, 200), "bla");
strcpy
使指针返回最后复制的指针会更有意义。memset(my_strcpy(a, "bla"), 0, a + 200);
(像std::copy_n
和std::fill_n
用C做++)。
我在谷歌搜索中看到了memset返回时遇到了这个问题。
我有一些代码在其中测试一个值,如果是,则测试是否为零。
因为C中没有完全可移植的方法来测试零,所以我必须在中间运行memset。
所以我的代码是:
if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )
这符合先前问题中列出的链接目的,但这是此技术的用法示例。
我将它留给其他人来判断这是否是好的编码。