Je voulais écrire une pile standard en C mais je ne suis pas sûr que ma fonction stk_size() puisse fonctionner sur d'autres plateformes à l'exception de mon PC 32 bits. J'ai lu que ce n'est pas bon de jeter un pointeur sur int. Mais quelle pourrait être une meilleure mise en œuvre? Je ne veux pas ajouter une "taille" -variable parce que c'est redondant à mes yeux.C - Pointeur vers int pour obtenir des éléments dans la pile
Voici quelques parties de la source:
#define MAX_STACK_SIZE 100
typedef struct stk stack;
struct stk
{
/* Stack */
int * stk;
/* Pointer to first free element of stack */
int * sp;
};
void stk_init(stack* s)
{
/* Allocate memory for stack */
s->stk = malloc(sizeof(s->stk) * MAX_STACK_SIZE);
/* Set stack pointer to first free element of stack -> 0 */
s->sp = s->stk;
}
int stk_size(stack* s)
{
return ((int) s->sp - (int) s->stk)/sizeof(int *);
}
int main(int argc, char * argv[])
{
stack * s;
stk_init(s);
}
Merci!
Si vous devez jeter, pourquoi ne pas jeter (si nécessaire) après la soustraction? –