memset() se uporablja za zapolnitev bloka pomnilnika z določeno vrednostjo.
Sintaksa funkcije memset() je naslednja:
// ptr ==>Začetni naslov pomnilnika, ki ga je treba zapolniti // x ==> Vrednost za zapolnitev // n ==> Število bajtov za zapolnitev, začenši // od ptr za zapolnitev void *memset(void *ptr, int x, size_t n );>
Upoštevajte, da je ptr prazen kazalec, tako da lahko tej funkciji posredujemo katero koli vrsto kazalca.
Oglejmo si preprost primer v C, da pokažemo, kako se uporablja funkcija memset():
java ponovi zemljevid
// 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;> }> |
>
>
Izhod:
Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>
Pojasnilo: (str + 13) kaže na prvi presledek (indeks na osnovi 0) niza GeeksForGeeks je za programske geeke., memset() pa nastavi znak '.', začenši s prvim ' ' niza do 8 mest podanega znaka niz in tako dobimo izhod, kot je prikazan zgoraj.
java logični niz
// 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; }> |
>
>
Izhod:
0 0 0 0 0 0 0 0 0 0>
vaja:
Predvidi izhod spodnjega programa.
// 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; }> |
java niz cmp
>
>
Upoštevajte, da zgornja koda ne nastavi vrednosti matrike na 10, saj memset deluje znak za znakom in celo število vsebuje več kot en bajt (ali znak).
Če pa 10 zamenjamo z -1, dobimo vrednosti -1. Ker predstavitev -1 vsebuje vse 1 v primeru char in int.
Referenca: man stran memset (linux)