memset()
void*
関数に渡されたアドレスと常に同じ値を返すように宣言されています。
戻り値の用途は何ですか?なぜ戻らないのvoid
ですか?
memset()
void*
関数に渡されたアドレスと常に同じ値を返すように宣言されています。
戻り値の用途は何ですか?なぜ戻らないのvoid
ですか?
strcat()
ですか?標準関数は、本来あるべきものではなく、あるべきものとして指定されている場合があります。
回答:
次のような呼び出しの連鎖に使用できます。
char a[200];
strcpy(memset(a, 0, 200), "bla");
strcpy
、最後にコピーされたポインタを超えてポインタを返すことは、逆に言えば、もっと理にかなっているでしょう。memset(my_strcpy(a, "bla"), 0, a + 200);
(C ++ std::copy_n
と同様std::fill_n
)。
Googlingでmemsetが何を返すかを確認するときにこの質問に出くわしました。
1つの値をテストするコードがあるので、それが真の場合、値がゼロかどうかを確認します。
Cにはゼロをテストする完全に移植可能な方法がないため、memsetを途中で実行する必要があります。
だから私のコードは:
if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )
これは、前の質問で挙げた連鎖の目的を物語っていますが、この手法の使用例です。
これが適切なコーディングであるかどうかを判断するのは、他の人に任せます。