fonction memset en langage c
j'étudie la fonction memset maintenant, mais tous les exemples concernent le tableau de char comme suit:
char a[100];
memset(a, 0, 100);
il positionnera tous les éléments de ce tableau de char à 0.
je me suis demandé si memset peut s'appliquer au tableau int ou au tableau float?
3 réponses
Oui, il peut s'appliquer à n'importe quelle mémoire tampon, mais vous devez entrer la taille correcte de mémoire tampon ... memset
traite n'importe quel tampon mémoire comme une série d'octets, donc si c'est char
, int
,float
,double
, etc, n'a pas vraiment d'importance. Gardez à l'esprit cependant qu'il ne va pas fixer les types de multi-octets à une valeur non-zéro spécifique ... par exemple:
int a[100];
memset(a, 1, sizeof(a));
définir chaque membre de a
à la valeur 1 ... ça va plutôt set tous les octet dans le tampon mémoire pris par a
1
, ce qui signifie Tous les quatre octets int
sera défini à la valeur 0x01010101
, qui n'est pas le même que 0x00000001
pour les tableaux de taille statique et de longueur variable, vous pouvez juste
<arbitrary-type> foo [...];
memset (foo, 0, sizeof (foo)); // sizeof() gives size of entity in bytes
Règle de base: Jamais coder en dur [tailles de données].
(cela ne fonctionne pas si vous passez des tableaux comme arguments de fonction: comportement de la taille en C)
Il peut être appliqué à n'importe quel tableau. L'100 à la fin est la taille en octets, donc un entier de 4 octets chacun, de sorte qu'il serait -
int a[100];
memset(a, 0, sizeof(a)); //sizeof(a) equals 400 bytes in this instance
l'Obtenir? :)