Comment utiliser memset fonction dans le tableau à deux dimensions pour l'initialisation des membres en C?
Je veux savoir comment je peux utiliser le memset()
fonction dans un two dimensional array
dans C.
Je ne veux pas face à tout problème de poubelles dans ce tableau. Comment initialiser ce tableau?
Quelqu'un pourrait-il m'expliquer comment faire?
La réponse dépend si la matrice est définie à l'aide de la pile mémoire ou la mémoire du tas.
Que ce soit sur la pile ou le tas, à l'aide de memset, comme l'Op a demandé, n'est pas différent.
Bien sûr, utiliser memset n'est pas toujours la meilleure façon d'aller. Une solution - si la fonction malloc() est utilisée, essayez de calloc() à la place.
Si vous avez besoin d'utiliser memset et souhaitez aider à déterminer la taille du tableau, s'il vous plaît poster un bout de code qui montre comment le tableau est alloué.
C'est mon code d'initialisation de définir tableau à deux dimensions et j'ai créer deux dimensions tableau dynamique, pour cette raison, je déclare de cette façon. int **matrice; int **de retour;
Que ce soit sur la pile ou le tas, à l'aide de memset, comme l'Op a demandé, n'est pas différent.
Bien sûr, utiliser memset n'est pas toujours la meilleure façon d'aller. Une solution - si la fonction malloc() est utilisée, essayez de calloc() à la place.
Si vous avez besoin d'utiliser memset et souhaitez aider à déterminer la taille du tableau, s'il vous plaît poster un bout de code qui montre comment le tableau est alloué.
C'est mon code d'initialisation de définir tableau à deux dimensions et j'ai créer deux dimensions tableau dynamique, pour cette raison, je déclare de cette façon. int **matrice; int **de retour;
OriginalL'auteur Fisol Rasel | 2014-04-13
Vous devez vous connecter pour publier un commentaire.
Si votre tableau 2D a durée de stockage statique, il est par défaut-initialisé à zéro, c'est à dire, tous les membres du groupe sont mis à zéro.
Si le tableau 2D a automatique de la durée de stockage, vous pouvez utiliser un initialiseur de tableau liste pour définir tous les membres à zéro.
Si vous allouer à votre tableau de façon dynamique, alors vous pouvez utiliser
memset
pour définir tous les octets à zéro.OriginalL'auteur ajay
Alok Enregistrer la réponse est le meilleur, car il fonctionne pour n'importe quel type de tableau. Vous pouvez également réinitialiser le tableau plus tard , par exemple:
Cela fonctionne pour tous les types.
Si vous voulez vraiment utiliser
memset
alors vous pouvez faire:Si vous avez seulement un pointeur vers le premier élément du tableau, alors:
Cependant, ces versions de tous les octets à zéro, ce qui pourrait ne pas être une représentation valable pour les types à virgule flottante et les types pointeur.
OriginalL'auteur M.M
Simplement:
Il va initialiser tous vos membres de la pile à 0.
Standard C99 6.7.8.21:
Je ne pense pas que l'OP comprend la sémantique de ce dont il a besoin.Dans le très à côté de la phrase qu'il cite les fonctionnalités attendues, qui peuvent être simplement obtenus à l'aide ci-dessus il n'est pas nécessaire pour
memset
.Et pour être tatillon l'OP dit "initialiser", uniquement dans un sens technique à l'aide dememset
ne pas "initialiser" tout juste définit la mémoire de0
.Je vois votre point de vue. Dans le même temps, memset peut être utilisé pour "initialiser" un espace - c'est à dire définir la valeur initiale. De toute façon, en posant des questions permettront de préciser que. Sinon, la réponse doit vraiment être de la question posée. Gardez à l'esprit que l'Op peut-être l'aide d'un certain nombre de compilateurs C, de tout âge, sur toute plate-forme... je suis pas en train de dire que cette réponse est mauvais en aucune façon - il suffit de ne pas répondre à la question "comme l'a demandé".
Apprécie les commentaires. L'objectif est de fournir la meilleure réponse possible en essayant de carte à ce que l'OP besoins plutôt que ce que l'OP demande. Pas nécessairement toutes les OP possèdent une clarté sur l'ancien, donc je laisse OP de clarifier le besoin. Et juste pour préciser, dans toute utilisation
memset
ne pas initialiser quoi que ce soit.Initialisation en termes techniques, des moyens pour créer un objet avec des valeurs spécifiques, en une seule étape &memset
ne peut jamais le faire.Si c'est votre objectif, je vous recommande de poser des questions avant de poster une réponse?
OriginalL'auteur Alok Save