begin process at 2012 02 10 00:52:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Structures en C / Win2k / Dev-Cpp


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Structures en C / Win2k / Dev-Cpp

jeudi 28 avril 2005 à 16:52:02 | Structures en C / Win2k / Dev-Cpp

BaptX

Bonjour à tous,

J'aurai quelques questions à vous poser en ce qui concerne le passage de structures en C. Comme c'est un peu comme les pointeurs, je me mélange les pinceaux. Donc je vais vous donner mes lignes pour essayer de résoudre mon problème ;)
J'ai déclaré une structure comme suit:
typedef struct// Structure d'une stratégie
{
   struct // Structure d'une entité
   {
      char choix; // Valeur correspondant au choix (C,T [ou R] ) définissant le coup
      int score;
   } entite;
   int nb_entite; // Défini le nombre d'entités dans cette stratégie
} strategie;

Et ensuite j'ai fait:
strategie strag[10];

D'après notre prof de prog, pour faire passer une variable d'une structure créée par l'utilisateur, il faut utiliser un pointeur.

Pour faire passer une seule case de ce tableau dans une fonction:
void hihi(strategie *strag)
Et j'appelle cette fonction avec:
hihi(&strag[10]);

Par contre comment faire pour faire passer l'intégralité du tableau dans ma fonction. En utilisant un double pointeur ca fonctionne pas.

En fait j'ai trouvé, je fais la fonction comme ça:
void hihi2(strategie strag[])
et j'appelle la fonction avec:
hihi2(&strag);

Ce que je ne comprends pas, c'est que Dev-Cpp me déclare des erreurs bizarres. Dans ma fonction où je ne fais rentrer qu'une seule case du tableau, il faut que j'utilise '->' pour atteindre mes différents champs de strucutres.
Par contre, quand je fais passer le tableau entier, premièrement je déclare un pointeur classique ce qui n'est pas logique (si on déclare un pointeur pour une case d'un tableau, il faudrait déclarer un double pointeur pour tout le tableau) et deuxièmement, je ne dois plus utiliser '->' car il me dit erreur mais revenir à l'utilisation du '.'

Soit je n'ai pas compris la différence entre le. et le -> dans les structures, soit c'est vraiment bizarre...

Si quelqu'un peut m'éclairer, ca serait gentil.
Msg aux modos: N'hésitez pas à retoucher mon texte si il est mal mis en page, je n'ai pas trouver l'option "citation de code"...

Manger c'est tricher.
Vomir c'est trahir.
Dormir c'est mourir.
jeudi 28 avril 2005 à 17:20:33 | Re : Structures en C / Win2k / Dev-Cpp

luhtor

void hihi2(strategie strag[])

et appel avec:
hihi2(strag);


Quand tu créer un tableau : int entier[10].
entier[i] est un entier. Mais "entier" est un pointeur ! :)

donc strag c'est un pointeur, pourquoi veux tu passer l'adresse tu pointeur avec &strag ?

donc l'appel de la fonction:

void hihi2(strategie *strag, int len);

hihi2(strag, longueur du tableau);

Dans la fonction hihi2, strag[i] te donnes accès aux données.


"il faudrait déclarer un double pointeur pour tout le tableau)" => non, pourquoi ?

"premièrement je déclare un pointeur classique ce qui n'est pas logique" => tu peux déclarer une référence, comme ca, tu oublis le pointeur (il n'est que masqué par le C++). De plus, le passage par pointeur ou référence est seulement utile si ta fonction a besoin de modifier les valeurs des paramètres et pour éviter des copies trop nombreuses.

Pour faire passer une seule case de ce tableau dans une fonction:
void hihi(strategie & strag)
Et j'appelle cette fonction avec:
hihi(strag[10]); <== plus de pointeur.


jeudi 28 avril 2005 à 17:40:36 | Re : Structures en C / Win2k / Dev-Cpp

BaptX

Je fais passer l'adresse car dans ma structure, j'ai plusieurs champs à modifier. Comme une fonction ne peut renvoyer qu'une seule valeur, autant mettre l'adresse en entrée comme ca je ne renvoie rien et c'est directement modifié.

En tout cas, merci de ton aide, vais essayer de décrypter tout ça ;)


Manger c'est tricher.
Vomir c'est trahir.
Dormir c'est mourir.


Cette discussion est classée dans : fonction, tableau, pointeur, structures, strag


Répondre à ce message

Sujets en rapport avec ce message

tableau de structures type pointeur [ par chocho ] Voila, je fait en c unpetit utilitaire de gestion d'adhérents.pour cela j'uilise un tableau de structure adhérent composée de deux pointeurs char *nom question sur les pointeur et tableau et matrice [ par Battousai ] bonjour a tous,ma question se porte comme indiqué si dessus sur l'utilisation des pointeur avec les tableau et surtout les matrices ou plus.d'abord j' [C] Probleme de passage d'un pointeur de tableau [ par tenev911 ] Bonjour, voici mon probleme :J'utilise la librairie ncurses.h et il permet de faire un type de variable appellé WINDOW (qui correspond graphiquement à TABLEAU de STRUCTURE [ par timy94 ] Bonjour Comment en C faire un tableau de pointeur pointant sur des structures.dans le but de trier ce tableau ex "tab.nom"  en modifiant les adresses fonction qui retourne un vecteur en C/C++ [ par rocketcariboo ] Je voudrais savoir comment on fait une fonction qui prend un tableau et qui retourne un autre tableau. Quelle est la façon la plus simple. Je sais qu' qsort fonctionnement? [ par deck_bsd ] Bonjour a tous,Voila, je voudrai trier ce tableau :char nt[][100] = {"un","trois","quatre","cinq","a","bb","b","axxxxxxxxxxxxxxxxxxx"};Avec la fonctio fonction recevant un pointeur de fonction d'une classe [ par fuliculi ] Bonjour à tous,j'ai un thread qui doit faire évoluer une variable "progress" de 0 à 100% (j'utilise les mutex pour éviter les écritures/lectures simul Triangle de Pascal [ par nadias ] Salut à tous,J'essais de traiter cette exercice mais je ne sais vraiment pas comment proceder.Pourriez-vous SVP m'aider.Je ne demande pas une solution Petit probleme avec un tableau [ par petitavion414 ] Salut à tous...J'ai un petit problème mais que je n'arrive pas à résoudre.Comment puis-ju passer en argument un tableau dans une fonction... Je m'expl Convertir un tableau de vecteur de String en pointeur [ par fcoutel ] Bonjour, J'ai cree un tableau dynamique a 2D de type string vector> tab,  je voudrais savoir quel est le meilleur moyen de le convertir en char***.M


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales