Se connecter / S'enregistrer
Votre question

pointeur Structure C

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
23 Juin 2006 11:37:48

Bonjour,

J'ai besoin d'aide avec un programme en C.

J'ai crée une structure pour remplir un tableau, cette structure est utilisée dans une fonction en passant par les pointeurs. Et cette fonction doit retourner une structure sur cette fonction pour etre utilisé dans le main.

Voici mon code:

/*Includes*/
#include <stdio.h>

/*Defines*/
#define PSNUMBERMAX 48
#define NBPOINT 7

/*Globals*/
/*Structure to define the Array from flash*/
typedef struct {
unsigned int Min;
unsigned int Max;
}Array[PSNUMBERMAX];

void Initialization(void);
int GetPSArrayFromFlash(void);

int main(void)
{
Initialization();
return 0;
}

void Initialization(void){
Array *Temp;
*Temp=GetPSArrayFromFlash();
}

int GetPSArrayFromFlash(void) {
Array *pArray;
int PSNumber;

for (PSNumber=1; PSNumber<48; PSNumber++)
{
if(PSNumber>4 && PSNumber<9){
(*pArray[PSNumber]).Min=13;
printf("Min%d\n",*pArray[PSNumber]);
(*pArray[PSNumber]).Max=20;
printf("%Maxd\n",*pArray[PSNumber]);
}
else{
(*pArray[PSNumber]).Min=1;
printf("%Mind\n",*pArray[PSNumber]);
(*pArray[PSNumber]).Max=5;
printf("Max%d\n",*pArray[PSNumber]);
}
printf("%d\n",*pArray[PSNumber]);
getchar();
}
return *pArray[PSNumber];
}

Merci, J'ai vraiment besoin d'aide.

Thomas

Autres pages sur : pointeur structure

23 Juin 2006 12:08:41

Citation :
J'ai crée une structure pour remplir un tableau, cette structure est utilisée dans une fonction en passant par les pointeurs. Et cette fonction doit retourner une structure sur cette fonction pour etre utilisé dans le main.

Pour ca, je pense que tu devrais faire de l'allocation dynamique (malloc();): tu alloues de la place pour ta structure dans ta fonction, puis tu renvoies le pointeur vers cette structure allouée dynamiquement...
24 Juin 2006 01:34:34

oui, c'est vrai que c'est une solution.
Moi j'ai finté lol, j'ai simplement déclaré la structure en globale et j'ai viré tous les pointeurs, et ca marche nickel du coup lol.
Par contre je vais quand meme tester le malloc parce que je ne suis pas sur que cela fonctionne puisqu'une fois sorti de la fonction secondaire, la pile sera vidée et donc on ne pourra pas utiliser la structure dans le main... non?

En tout cas merci,
Thomas
24 Juin 2006 02:22:16

Ben justement, réserver dynamiquement de la place peut servir à ca; et cette place ne sera pas libérée tant que tu n'auras pas fait de free(); dessus.
Par contre il faut quand même garder l'adresse de ta structure en la renvoyant à la fin de la fonction... Sinon tu ne pourras pas la réutiliser.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS