[英]What's the use of memset() return value?
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) )
這說明了前面問題中列出的鏈接目的,但它是使用此技術的一個示例。
我會留給其他人來判斷這是否是好的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.