簡體   English   中英

memset() 返回值有什么用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM