The man page of memset function in C, says
The
memset()function fills the first n bytes of the memory area pointed to by s with the constant byte c.
And the signature of memset is as below:
void *memset(void *s, int c, size_t n);
Since the function fills the first n bytes of the memory, why the c's type is int and not char? Couldn't it be char and works just fine? What will happen if we set c a number greater than size of a byte?
I tried to play with memset to get more into it but it didn't help me.
#include <string.h>
#include <stdio.h>
int
main(int argc, char *argv[]) {
char* s[5] = {0, 0, 0, 0, 0};
memset((void*)s, 257, 5);
for (int i=0; i<5; i++)
fprintf(stdout, " %d", s[i]);
putc('\n', stdout);
return 0;
}
The output is:
[amirreza@localhost memst]$ gcc memst.c
[amirreza@localhost memst]$ ./a.out
16843009 0 0 0 0