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
수행).
나는 인터넷 검색에서 memset이 반환 한 것을 볼 때이 질문을 보았습니다.
하나의 값을 테스트하는 코드가 있으며 이것이 사실이면 값이 0인지 테스트합니다.
C에서 0을 테스트하는 완전히 이식 가능한 방법이 없기 때문에 중간에 memset을 실행해야합니다.
그래서 내 코드는 다음과 같습니다.
if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )
이것은 이전 질문에 나열된 연결 목적을 말하지만이 기술에 대한 사용의 예입니다.
이것이 좋은 코딩인지 아닌지 판단하기 위해 다른 사람들에게 맡기겠습니다.