memset() wordt gebruikt om een geheugenblok te vullen met een bepaalde waarde.
De syntaxis van de functie memset() is als volgt:
// ptr ==>Startadres van het te vullen geheugen // x ==> Te vullen waarde // n ==> Aantal bytes dat moet worden gevuld vanaf // vanaf ptr dat moet worden gevuld void *memset(void *ptr, int x, size_t n );>
Merk op dat ptr een void pointer is, zodat we elk type pointer aan deze functie kunnen doorgeven.
Laten we een eenvoudig voorbeeld in C bekijken om te demonstreren hoe de memset()-functie wordt gebruikt:
js onclick
// C program to demonstrate working of memset()> #include> #include> > int> main()> {> >char> str[50] =>'GeeksForGeeks is for programming geeks.'>;> >printf>(>'
Before memset(): %s
'>, str);> > >// Fill 8 characters starting from str[13] with '.'> >memset>(str + 13,>'.'>, 8*>sizeof>(>char>));> > >printf>(>'After memset(): %s'>, str);> >return> 0;> }> |
>
>
Uitgang:
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>
Uitleg: (str + 13) verwijst naar de eerste spatie (op 0 gebaseerde index) van de string GeeksForGeeks is voor het programmeren van geeks., en memset() stelt het karakter '.' in, beginnend vanaf de eerste ' ' van de string, tot maximaal 8 karakterposities van het gegeven string en daarom krijgen we de uitvoer zoals hierboven weergegeven.
// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 0. memset(arr, 0, n*sizeof(arr[0])); printf('Array after memset()
'); printArray(arr, n); return 0; }> |
string in array java
>
>
Uitgang:
0 0 0 0 0 0 0 0 0 0>
Oefening :
Voorspel de uitvoer van onderstaand programma.
// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 100. memset(arr, 10, n*sizeof(arr[0])); printf('Array after memset()
'); printArray(arr, n); return 0; }> |
>
>
Merk op dat de bovenstaande code de arraywaarden niet op 10 instelt, omdat memset teken voor teken werkt en een geheel getal meer dan één byte (of tekens) bevat.
Als we 10 echter vervangen door -1, krijgen we waarden van -1. Omdat de weergave van -1 alle enen bevat in het geval van zowel char als int.
Referentie: memset manpagina (linux)