我正在尝试复制 memset 函数。由于我不明白的原因,以下代码不起作用并产生奇怪的结果:
#include <sys/types.h>
void *mem_set(void *dst, int c, size_t n)
{
char *d;
size_t i;
d = dst;
for (i = 0; i < n; i++)
d[i] = (unsigned char) c;
return dst;
}
这是测试:
int *a;
a = malloc(4 * sizeof(int));
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
mem_set(a, 1, 4);
printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
free(a);
这里的输出:
1 2 3 4
16843009 2 3 4