memset에서 void 포인터 형 넘기는데 어떻게 동작하는 거죠?

jungjury의 이미지

void *memset(void *s, int c, size_t n);

void *형으로 메모리 시작주소, 채울값, 메모리크기를 인자로 넘겨받는데....
어떻게 내부적으로 구현되는지 궁금합니다..

인자에는 타입이 무엇인지 알수 있는 정보가 전혀없어서요.,...

Fe.head의 이미지

void *memset(void *s, int c, size_t n)
{
  size_t i;
  char * src = (char *) s;
  for(i=0; i<n; ++i) {
      src[i] = (char) c;
  }
 return s;
}

이런 형태가 아닐까요?
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

jiee의 이미지

윗분이 잘 설명하셨네요..-_-;;

토나오게...

cinsk의 이미지

정확하게는 char *가 아닌 unsigned char *로 캐스팅하는 것이 맞습니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/