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: 266

Filed under:
|
|
|

The manpage says about memset:

#include <string.h>
void *memset(void *s, int c, size_t n)

The memset() function fills the first n bytes of the memory area pointed to by s with the constant byte c.

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

Related posts about c++

Related posts about c