Je vais commencer par cataloguer ce que je sais de distinguer cela de ce que je veux:
astruct muntructeur; code> li>
- Je peux déclarer un pointeur à une structure via
astruct * pmystructre; code> puis définissez la valeur de ce pointeur sur une instance via PMYStruct = & muntruct; li> li> li>
ol> Que je voudrais, c'est faire en quelque sorte le contraire de n ° 3: J'aimerais déclarer une instance d'une structure définie pour être traitée par un pointeur particulier ... quelque chose d'appréhension à : P>
DCL PTHESTRUCT POINTER;
DCL 1 THESTRUCT BASED(PTHESTRUCT),
3 ... (rest of the structure) ;
3 Réponses :
Voulez-vous dire?
typedef struct
{
int a;
int b;
} struct_t;
struct_t myStruct;
struct_t* pStruct;
pStruct = &myStruct;
pStruct->a =5;
Non, j'aimerais que le pointeur est en quelque sorte connecté à la structure déclarée. De sorte que si je change le pointeur, la mémoire référencée par des références à la structure est modifiée. Si j'emprunte la syntaxe de PL / I: Typedef Astruct {....} ASTRUCT * // Créer le programme TypeDef "Modèle"; // déclarer un pointeur pour le muntructeur à base de muntructeur (pystructeur); // déclarer une instance d'astruct qui "flotte" avec le pmystruct code> à tout moment je modifie la valeur du PMYStructeur, la mémoire que les références du muntructeur changent avec elle.
Si vous voulez Si vous voulez dans de nombreuses circonstances, Cela serait considéré comme une mauvaise pratique. P> p> Thestruct CODE> Pour vous reposer sur le * pstructruct code> pour la valeur de pstructeur code> au moment de l'affectation / de la définition de Thestruct code>, alors C ++ a ceci dans sa fonctionnalité de références, mais c ne le fait pas. theStract code> pour se référer à * pstructeur code> pour la valeur de la valeur de pstructeur code> à l'heure theStruct est utilisé code> est utilisé, cela peut être accompli avec une macro: p>
Fondamentalement, j'aimerais créer une instance particulière d'une structure pour être "jointe" à un pointeur particulier, de sorte que je n'ai pas à taper pointeur -> code> devant chaque référence.
Voulez-vous dire
object->field = 42; bar(object); // pass a pointer
Utilisez
et pthestruct code>Je suis confondu par votre
PthStract -> ThestructDactDaTaTem code>. Il serait sûrementpthestruc-> strucdataitem code>?Je ne peux pas penser à un moyen d'initialiser par magie un pointeur de la façon dont vous voulez. Il suffit de faire des choses le moyen, puisque vous écrivez le code C.
Scott Fagen, pourquoi ne pas utiliser
pthestruct -> code>?Je comprends la distinction entre un
Typedef struct code> et unstruct code>. Je cherche à voir si la fonctionnalité,basée sur (ptr-expression) code>, disponible dans PL / I (et Variantes), est dans C. À partir des réponses et des commentaires, il semblerait de ne pas être une caractéristique de la langue.