How to use memset function in two dimensional array for initialization of members in C?

Fisol Rasel picture Fisol Rasel · Apr 13, 2014 · Viewed 43.3k times · Source

I want to know how I can use the memset() function in a two dimensional array in C.

I don't want to face any garbage problems in that array. How do I initialize this array?

Could someone explain me how to achieve it?

Answer

ajay picture ajay · Apr 13, 2014

If your 2D array has static storage duration, then it is default-initialized to zero, i.e., all members of the array are set to zero.

If the 2D array has automatic storage duration, then you can use an array initializer list to set all members to zero.

int arr[10][20] = {0};  // easier way
// this does the same
memset(arr, 0, sizeof arr); 

If you allocate your array dynamically, then you can use memset to set all bytes to zero.

int *arr = malloc((10*20) * (sizeof *arr));
// check arr for NULL

// arr --> pointer to the buffer to be set to 0
// 0 --> value the bytes should be set to
// (10*20*) * (sizeof *arr) --> number of bytes to be set 
memset(arr, 0, (10*20*) * (sizeof *arr));