begin process at 2012 05 29 13:51:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pointeurs et tableaux de structure ?


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

Pointeurs et tableaux de structure ?

mercredi 4 mai 2005 à 11:33:12 | Pointeurs et tableaux de structure ?

tintin72

Bonjour,

J'aimerai avoir un petit éclaircissement au sujet des tableaux de structure et des pointeurs.
Au cours du listage d'un tableau de structure,  j'ai besoin de connaitre à chaque fois la valeur de l'élément précédent.
J'ai donc écrit un truc comme ça :

if ((pTabStruct - 1)->unElement == 2) ...

Apparement ça marche, mais qd même une chose me tracasse.
Lors du test, le pointeur pTabStruct va décrémenter l'index du tableau de structure de 1 et vérifier la valeur de unElement. Tant que l'index vaut 1, 2, 3 etc, pas de pb, le pointeur pointera toujours sur qq chose de valide. Mais que se passe t-il lorsque l'index est égal à zéro. Cela reviendrait à aller vérifier la valeur de unElement se trouvant dans TabStruct[-1], qui n'existe pas. 
Est ce qu'il n'y a pas un risque que le pointeur pointe sur n'importe quoi et génère une erreur ou fasse planter le programme?

Si quelqu'un pouvait m'éclairer.

Merci

Tintin 72
mercredi 4 mai 2005 à 11:44:28 | Re : Pointeurs et tableaux de structure ?

MNEMONIC

Oui, il y a un risque de plantage, et oui, il peut te renvoyer n'importe quoi.
Par contre, je ne sais pas de quoi ça dépend (la différence entre les deux).
Le plantage que j'ai vu le plus souvent est un message "la mémoire ne peut pas être read" ou written dans le cas d'une écriture...
Si je me souviens bien, quand tu travailles avec des pointeurs, c'est à toi de gérer les effets de bord...

mercredi 4 mai 2005 à 11:50:14 | Re : Pointeurs et tableaux de structure ?

buno

Administrateur CodeS-SourceS
Effectivement, pTabStruct[-1] va poser problème. Je te conseille de traiter le 1er élément à part. Mais pourquoi tu fais pas un truc de ce genre:

for (int i=1; i<NB_ELEMENT; i++)
{
   /* ... */
   if (TabStruct[i]->unElement == 2)
    ....
}


Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
mercredi 4 mai 2005 à 12:05:32 | Re : Pointeurs et tableaux de structure ?

tintin72

Merci à vous deux pour ces renseignements ;-)

Tintin 72
mercredi 4 mai 2005 à 13:34:09 | Re : Pointeurs et tableaux de structure ?

DeAtHCrAsH

pTabStruct[-1] ???
Faudrait peut etre revoir les bases du C apparement :)

Ici on parle de pointeur et non d'indice de tableau!!!
Faut pas tout mélanger! Dans le cas ou tu essayes de lire le contenu de l'adresse mémoire qui précédent le point de départ de pTabStruct, dans le meilleure des cas tu lira quelques choses qui n'a rien a voir avec ton prog, ou alors le prog plante (dépassement des bords).

Pour corriger ce problème, tu n'as cas sauvegarder l'adresse de départ de pTabStruct, et la comparer à celle en cours.
Ainsi, tu sera si tu es au début de ton tableau ou pas.

Exemple:

MyStruct pTemp[20]; // Pointeur de meme type et de meme taille que pTabStruct

pTemp = pTabStruct;

while( pTemp != pTabStruct)
{
   // Ici tu mets ton codes
   if ((pTabStruct - 1)->unElement == 2)
  {
      
// Ici l'action a éxécuter
   }
}

Voila, sans oublier que ce n'est que le principe de base. Après il faut que tu puisses sortir de la boucle au cas ou tu aurais fini de parcourrir ton tableau.
Plusieurs solutions s'offrent a toi pour cela.
N'hésites pas si tu as des questions.


Shell
mercredi 4 mai 2005 à 19:28:12 | Re : Pointeurs et tableaux de structure ?

tintin72

Merci pour cette précision ;-)
Je crois que je vais utiliser un truc genre: i = 1 comme mentionné plus haut car en plus ça m'arrange de pas avoir l'indice 0.
Mais ta solution est aussi intéressante et ça peut être une bonne alternative. 

Tintin 72


Cette discussion est classée dans : valeur, tableaux, structure, pointeurs, unelement


Répondre à ce message

Sujets en rapport avec ce message

LES TABLEAUX UNIDIMENSIONNELS. [ par SniPi ] Voilà tout d'abord bonjour à tous, je viens de m'inscrire sur ce site et c'est ma première apparition ( mais pas la dernère).En fait j'ai un problème passer un tableau de pointeurs en parametres [ par achirane ] bonjour,je debute en C (dur..) et j'ai un pb qui va surement vous faire ricaner ;-) :je voudrais passer un tableau de pointeurs en parametre a ma fonc urgent svp exo sur les tableaux [ par blastmanu ] bonjour tt le monde voila mon probleme:Soit un tableau Tab1 de taille maxi Tmax=35 On veut:-Remplir Tab1 en demandant les valeur a l'utilisateur. Le n construction de tableaux de valeur. [ par bunji ] Bonjour, je cherche a creer un petit logiciel me permetant d'ajouter de supprimer et de modifier des valeurs de genre char ou int. Je veux aussi pouvo Langage C(niveau débutant): tableaux et pointeurs [ par DeltaX ] Bonjour à tous.J'ai trouvé ce site par hazard et espère que quelqu'un aura quelques secondes pour m'aider, mon niveau étant très peu élevé en CMon pro Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ] J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char Pointeurs de pointeurs [ par miximog ] Bonjour a tous enfin bonsoir ;) Enfaîte j'ai lu 2 tuto sur les pointeurs donc je commence a bien comprendre la notion de pointeurs, mais il y a une n C - Tableau à deux dimensions, de pointeurs [ par lamoua76 ] Bonjour à tous !Je dois créer un tableau à deux dimensions de pointeurs (d'une structure que j'ai créé).Ma structure se nomme ainsi : pile.Mon tableau Question sur les tableaux de structures [ par Kleidp ] Bonjour,j'ai quelques problèmes avec les tableaux de structure. Tout d'abord voici une de mes structures:typedef struct{    float r,g,b;}text;text tex Valeur par défaut dans une structure [ par julienbj ] Je cherche un moyen de mettre des valeurs pas défaut dans une structure.Je m'explique par un exemple:struct s_a{    int i;    int j;};Plus loin dans l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 5,491 sec (3)

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