How memset initializes an array of integers by -1?
Posted
by
haccks
on Stack Overflow
See other posts from Stack Overflow
or by haccks
Published on 2014-06-13T14:27:12Z
Indexed on
2014/06/13
15:24 UTC
Read the original article
Hit count: 338
The manpage says about memset:
#include <string.h> void *memset(void *s, int c, size_t n)The
memset()function fills the firstnbytes of the memory area pointed to byswith the constant bytec.
It is clear that memset can't be used to initialize int array as shown below:
int a[10];
memset(a, 1, sizeof(a));
it is because int is represented by 4 bytes (say) and one can not get the desired value for the integers in array a.
But I often see the programmers use memset to set the int array elements to either 0 or -1.
int a[10];
int b[10];
memset(a, 0, sizeof(a));
memset(b, -1, sizeof(b));
As per my understanding, initializing with integer 0 is OK because 0 can be represented in 1 byte (may be I am wrong in this context). But how it is possible to initialize b with -1 (a 4 bytes value)?
© Stack Overflow or respective owner