memset() brukes til å fylle en minneblokk med en bestemt verdi.
Syntaksen til memset()-funksjonen er som følger:
// ptr ==>Startadresse til minnet som skal fylles // x ==> Verdi som skal fylles // n ==> Antall byte som skal fylles starter // fra ptr som skal fylles void *memset(void *ptr, int x, size_t n );>
Merk at ptr er en void-peker, slik at vi kan sende alle typer peker til denne funksjonen.
La oss se et enkelt eksempel i C for å demonstrere hvordan memset()-funksjonen brukes:
nfa til dfa
// 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;> }> |
>
>
Produksjon:
foreach java
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>
Forklaring: (str + 13) peker på første mellomrom (0 basert indeks) i strengen GeeksForGeeks er for programmering av geeks., og memset() setter tegnet '.' fra første ' ' i strengen opp til 8 tegnposisjoner av den gitte streng og dermed får vi utgangen som vist ovenfor.
// 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.valueof java
>
Produksjon:
0 0 0 0 0 0 0 0 0 0>
Trening :
Forutsi resultatet av programmet nedenfor.
hva er 25 av 100
// 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 at koden ovenfor ikke setter matriseverdier til 10, da memset fungerer tegn for tegn og et heltall inneholder mer enn én byte (eller tegn).
hva er objekt java
Men hvis vi erstatter 10 med -1, får vi -1-verdier. Fordi representasjon av -1 inneholder alle 1-er i tilfelle av både char og int.
Henvisning: memset mannside (linux)