begin process at 2008 09 06 03:04:57
1 237 631 membres
31 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : faire une pile en C [ Divers / Débutant(e) ] (lenanttais44)

faire une pile en C le 28/01/2008 09:43:21

lenanttais44
Bonjour,
je voudrais faire une pile de fonctions en C
mais je ne sais pas du tout comment la faire sans utiliser de malloc
Je veux pas de malloc car je veux une vrai pile(comme en assembleur) mais pas de liste chainée
Si quelqu'un sait comment le faire je suis preneur
merci d'avance

Re : faire une pile en C le 28/01/2008 10:26:17

Spiffou
et bien si tu connais la taille max de ta pile tu peux toujours allouer un tableau statique et gérer toi même l'ajout et le rentrait d'éléments non?

Re : faire une pile en C le 28/01/2008 15:46:57

SAKingdom
Membre Club
Un tableau, comme dit par Spiffou et un index. C'est le minimum.
int pile[50];
int i = 0;

pile[i++] = 5; // On empile
j = pile[--i]; // On dépile

Tu peux aussi te faire des fonctions push et pop pour savoir si, par exemple, la pile est plein ou vide etc.

Sinon, sera un peu dur de faire une pile dynamique si tu ne veux pas utiliser l'allocation dynamique.

C++ (@++)


Re : faire une pile en C le 30/01/2008 14:41:34

lenanttais44
je me suis mal fait comprendre apparemment
j'ai dit pile de fonction

genre pile[0]=&fonction.o;
ou pile[0]=&fonction.c

Re : faire une pile en C le 31/01/2008 14:40:21

SAKingdom
Membre Club
Je ne comprend pas. Si tu parles d'une pile de pointeurs sur fonction, ok, c'est le même principe. Mais, d'après ton exemple, je ne vois vraiment pas de quoi tu parles.

C++ (@++)


Re : faire une pile en C le 31/01/2008 16:57:58

lenanttais44
Mon exemple était un peu nul

Je crois qu'on est tous d'accord qu'une fonction et une procédure c'est quasi comparable.
Un pointeur de fonction c'est un truc du genre

int (*p_1ms)(int, int)=NULL;
p_1ms =&add;
int (*tab_fct[3]) () = {p_1ms, p_10ms,p_100ms};

mais comment faire une pile de pointeur de fonction(ou plutot de programme genre  add.c?
car toi tu fais une pile d'entier.
En gros par rapport à toi faudrais mettre les adresses des  fonctions ou des programmes.
Ca serait encore mieux pour moi 

Re : faire une pile en C le 31/01/2008 22:11:26

SAKingdom
Membre Club
Comme ça le dis, il s'agit de pointeurs de fonction.
Un pointeur fait 4 octets (32bits).
Tu fais donc un tableau de DWORD dans lequel tu stocks l'adresse pointé, puis quand tu fais l'appel, tu transtypes (cast).


C++ (@++)


Re : faire une pile en C le 31/01/2008 22:12:00

SAKingdom
Membre Club
"Un pointeur fait 4 octets (32bits)."
Sur un système 32 bits bien sûr.

C++ (@++)


Re : faire une pile en C le 01/02/2008 00:56:50

SAKingdom
Membre Club
Ou encore si tes fonctions ont toutes le même prototype:
Exemple:

typedef void(__stdcall *EXEMPLE)(int, int, int);

EXEMPLE pile[50];
int i = 0;

pile[i++] = fonction1; // On empile la fonction void __stdcall fonction1 (int a, int b, int c)
pile[--i](1, 2, 3); // On dépile et appel la fonction dans la pile

C++ (@++)



Classé sous : pile

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS