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?
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));