0
votes

Comment transmettre des éventails de structures dans une seule fonction à une autre fonction à travers

Hey, j'ai donc cette fonction appelée configuration et dans cette fonction, une gamme de structs est déclarée et remplie. XXX

Cependant, dans le Main () Fonction J'ai une autre configuration de la fonction comme ceci: xxx

mais il ne dit que les murs d'accès dans setup_bar () . 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 () fonctionne. Y a-t-il un moyen autour de cela?

c

2 commentaires

Incarquez ce que vous essayez de faire, Struct Wall Walls est une variable locale qui n'existe pas après Configuration La fonction renvoie à la principale. Vous voudrez peut-être regarder Allocation de mémoire dynamique en C


Vous 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.


3 Réponses :


1
votes

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];


3 commentaires

Probablement compte 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.



0
votes

Vous ne pouvez pas. Ceci est une limitation d'une chose appelée la durée de stockage .

Fondamentalement, une fois configuration sort, mur est détruit. Vous ne pouvez plus y accéder à nouveau.

Pour contourner cela, créez deux variables globales statiques, mur et wall_size : xxx

puis allouez-les dans configuration : xxx

de cette façon, murs sera disponible à toutes les fonctions de l'unité de traduction (fondamentalement, le fichier .C que vous utilisez). Vous pouvez ensuite traverser murs à l'aide de wall_size .


2 commentaires

taille de pointeur? probablement signifiait mur de struct


@Tony Nope, je voulais dire ce que j'ai écrit. Cette déréférences murs puis prend la taille du mur struct (indirectement). N'utilisez jamais un nom de type pour Tailleof dans masloc .



0
votes

Votre problème avec le code est que vous utilisez un mauvais modèle.

Définir la fonction Configuration La manière suivante xxx

et Dans l'écriture principale xxx

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 à xxx


0 commentaires