Hey, j'ai donc cette fonction appelée configuration et dans cette fonction, une gamme de structs est déclarée et remplie. Cependant, dans le mais il ne dit que les murs d'accès dans Main () Code> Fonction J'ai une autre configuration de la fonction comme ceci: p> setup_bar () code>. J'essaie de passer la matrice de murs d'une fonction à une autre qui est en tête principale. Le tableau de struct n'est pas déclaré globalement car sa taille n'est pas connue tant que la fonction de configuration () code> fonctionne. Y a-t-il un moyen autour de cela? P> p>
3 Réponses :
En supposant ce qui suit:
Le tableau des structures n'est pas déclaré globalement car sa taille n'est pas connue tant que la configuration
() code> fonction fonctionne. P> blockQquote>Alors votre seule option semble allouer de manière dynamique une telle matrice à l'aide de
MALLOC () code> et de le renvoyer à l'appelant, comme celui-ci: P>struct wall walls[COUNT];
Probablement compte code> n'était qu'un exemple.
Quelle est la probabilité que l'OP puisse simplement copier votre code et partir (c'est-à-dire pas le regarder du tout)?
@ Jl2210 c'est une très bonne question. Je vous demande cela dans mon sommeil de temps en temps.
Vous ne pouvez pas. Ceci est une limitation d'une chose appelée la durée de stockage em>. Fondamentalement, une fois Pour contourner cela, créez deux variables globales statiques, puis allouez-les dans de cette façon, configuration code> sort, mur code> est détruit. Vous ne pouvez plus y accéder à nouveau. P> mur code> et wall_size code>: p> configuration code>: p> murs code> sera disponible à toutes les fonctions de l'unité de traduction (fondamentalement, le fichier .C code> que vous utilisez). Vous pouvez ensuite traverser murs code> à l'aide de wall_size code>. P> p>
taille de pointeur? probablement signifiait mur de struct code>
@Tony Nope, je voulais dire ce que j'ai écrit. Cette déréférences murs code> puis prend la taille du mur struct code> (indirectement). N'utilisez jamais un nom de type pour Tailleof code> dans masloc code>.
Votre problème avec le code est que vous utilisez un mauvais modèle.
Définir la fonction et Dans l'écriture principale p> Une autre approche est la suivante pour allouer de manière dynamique une gamme de structures dans la configuration de la fonction. Dans ce cas, les fonctions peuvent ressembler à p> Configuration code> La manière suivante p>
Incarquez ce que vous essayez de faire,
Struct Wall Walls Code> est une variable locale qui n'existe pas aprèsConfiguration code> La fonction renvoie à la principale. Vous voudrez peut-être regarder Allocation de mémoire dynamique en CVous auriez le même problème si la variable était de tout autre type. Je pense que vous devez en étudier plus sur la portée variable et sur la manière d'écrire et d'utiliser, de fonctionner avant d'ajouter les complications des tableaux.