这段代码片有什么问题

1 c debugging memory-management compiler-errors

伙计们,这里是一个实现memset(),但是我被告知代码中存在一个逻辑错误.你能帮我找到吗?

我觉得目标字符串的双指针应该传递给这个函数,这就像传递指针变量的地址而不是指针本身.

我在MS VC++ IDE中执行代码时遇到"访问冲突".

'C'库函数memset的定义是

void *memset(char *s, char c, size_t n) 

Copy c to the first n characters of s. Return s.


void *memset(char *s, char c, size_t n)
{
  size_t i;
  for (i = 0; i < n; i++, s++)
  {
    *s = c;
  }
  return s;
}
Run Code Online (Sandbox Code Playgroud)

ojb*_*ass 6

这有几个问题.

void *memset(char *s, char c, size_t n)
{
  size_t i;
  for (i = 0; i < n; i++, s++)  /* incrementing s means you cannot return */
  {                             /* the original value */
    *s = c;                     /* consider using s[i] = c after not incr. s*/
  }
  return s;                     /* this should probably be a cast back to void */
}
Run Code Online (Sandbox Code Playgroud)