0
votes

Comment obtenir une adresse de structure à l'intérieur des structures?

J'essaie d'obtenir l'adresse de la structure.

Je veux obtenir l'adresse dans un int * , et je veux modifier l'adresse en ajoutant des chiffres au int * . J'ai essayé plusieurs manières, mais je ne peux pas le résoudre. xxx xxx

Comment puis-je obtenir m [0] [0] [0] adresse 's dans un int * ?

c

3 commentaires

Tout simplement (int *) & m [0] [0] ?


Où est le int que vous souhaitez aborder? Vous avez Char S dans la structure.


Peut-être que vous voulez un «code> union au lieu d'un struct ... mais je ne peux que deviner qu'à ce que vous essayez vraiment de faire parce que vous ne nous avez pas dit.


3 Réponses :


1
votes

Vous n'avez pas besoin d'avoir l'adresse dans un int * afin d'y ajouter. La façon dont [] fonctionne, est-ce qu'il ajoute au pointeur et à la déréférences.

Vous pouvez simplement ajouter à * (m [0] + 1) pour obtenir le deuxième élément.


0 commentaires

-1
votes

Que diriez-vous:

int * ptr = (int *) m [0];


0 commentaires

4
votes

Les premières choses permettent d'abord typedef code> votre structure, nous pouvons donc taper moins et être plus clair: xxx pré>

Pointeur vide strong> p>

Un pointeur à vide est un type de pointeur "générique" fort ". Un Void * code> peut être converti en tout autre type de pointeur sans une coute explicite forte>. Nous ne pouvons pas désaffecter un void * code> ou faire du pointeur arithmétique avec elle; Vous devez la convertir en premier pointeur de type de données complète (comme int * code> par exemple) puis effectuez la réfraction ou le pointeur arithmétique. p>

maintenant, MALLOC () la valeur de retour " p>

Votre code devient: p> xxx pré>

la taille de (vide *) code> est identique à la taille de tout pointeur (à l'exception des pointeurs de fonction dans certaines machines / OS). P>

tout ensemble ensemble strong> p>

Comment puis-je obtenir m [0] [0] 's adresse dans un int *? p> BlockQuote>

C'est une mauvaise question! parce que m est un tableau de Void * code> à "NUM_D STRUCTS" (Tenant l'adresse du tas NUM_D). P>

Si vous souhaitez l'adresse de départ du i-th num_d code> struct dans le tableau m code>, puis renvoyer le vide * code> dans l'index i code> dans ce tableau m [ I] code>. et si vous voulez le lancer, je ne peux pas le jeter (aucun besoin réellement), attribuez-le simplement: P>

unsigned char data = ((num_d*)m[i])->data;

unsigned char* p_data = &((num_d*)m[i])->data;


1 commentaires

@Park - content de vous aider. J'espère que ma réponse vous a aidé et rendre les choses plus claires. Si vous le trouvez utile et clair, veuillez accepter et le voter (poussant le V à proximité). Merci.