Memset
Résolu
Theo_0055
Messages postés
273
Date d'inscription
Statut
Membre
Dernière intervention
-
Theo_0055 Messages postés 273 Date d'inscription Statut Membre Dernière intervention -
Theo_0055 Messages postés 273 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je comprends le fonctionnement général de
Par exemple :
1. Pourquoi faire tab[0] aulieu de par exemple sizeof(int)*4?
2. Comment savoir ce qu’il y a dans tab[0] vu que on a rien mis encore dans notre tableau
3. Pourquoi aussi lorsqu’on change le 0 par un 10 on obtient des n’ombres bizarres
Moi je pensais que ça allait remplir les 4 premières cases du tableau avec 10 mais apparemment non
Pourtant si on avait mis 0, ça allait mettre des 0.
Je comprends le fonctionnement général de
memsetsauf les trucs concernant les entiers avec les bytes et autres.
Par exemple :
int tab[10] memset(tab, 0, 4 * sizeof(tab[0]))
1. Pourquoi faire tab[0] aulieu de par exemple sizeof(int)*4?
2. Comment savoir ce qu’il y a dans tab[0] vu que on a rien mis encore dans notre tableau
3. Pourquoi aussi lorsqu’on change le 0 par un 10 on obtient des n’ombres bizarres
memset(tab, 10, 4 * sizeof(tab[0]))
Moi je pensais que ça allait remplir les 4 premières cases du tableau avec 10 mais apparemment non
Pourtant si on avait mis 0, ça allait mettre des 0.
6 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
1) je pense que les deux sont équivalents
2) on ne sait pas, au départ, ce qu'il y a "dans" tab[0]
3) cela remplit les octets des 4 premiers
1) je pense que les deux sont équivalents
2) on ne sait pas, au départ, ce qu'il y a "dans" tab[0]
3) cela remplit les octets des 4 premiers
intdu tableau.
3. Ça le remplit comment?
Par exemple si j’ai :
Ça renvoie pour
D’où vient ce chiffre ?
Par exemple si j’ai :
int tab1[] = {3, 4}; int tab2[] = {1, 2}; memset(tab1, 1, sizeof(int))
Ça renvoie pour
tab[0]et
tab[1]un nombre bizarre
16843009.
D’où vient ce chiffre ?
Merci j’ai compris
Pour voir si j’ai compris si à la place de 4 j’avais mis 2,esceque cela veut dire que ça rempli 2 octets avec la valeur 1 et on aurait obtenu 01010000?
Pour voir si j’ai compris si à la place de 4 j’avais mis 2,esceque cela veut dire que ça rempli 2 octets avec la valeur 1 et on aurait obtenu 01010000?
Eh bien, cela dépend du processeur, et parfois du logiciel.
C'est pour cela qu'il est recommandé d'éviter de travailler sur les octets d'un nombre.
Plus d'informations: https://fr.wikipedia.org/wiki/Boutisme
C'est pour cela qu'il est recommandé d'éviter de travailler sur les octets d'un nombre.
Plus d'informations: https://fr.wikipedia.org/wiki/Boutisme
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question