Se connecter avec
S'enregistrer | Connectez-vous

pointeur Structure C

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte
Expert Programmation

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...

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
Expert Programmation

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.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde