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 you have for example and array of integers and want to use memset explicitly:
int array[M][N];
You do not need to initialize at declaration with { 0 }.
just
memset(array,0,M*N*sizeof (int));
All of the above are correct because in order to get the right sizeof array, the array must have been initialized first. And arrays decay to one level in pointers.
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));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With