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: 272
The manpage says about memset
:
#include <string.h> void *memset(void *s, int c, size_t n)
The
memset()
function fills the firstn
bytes of the memory area pointed to bys
with 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