Et oui, quand on fait des ADT/POO, on apprend à donner *aussi* un initialiseur/constructeur. int newPile(struct pile*);
Tiens c'est pas con. J'avais pas pensé à ça, j'ai bien fait de raconter ma vie. Quand je vous le disais qu'on en apprenait tous les jours ici.
Si tu avais lu ce groupe plus en détails, tu saurais que les ADT font partie de la culture de ce groupe.
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Bertrand Mollinier Toublet
AG wrote:
Finalement, pour initialiser un tableau entier avec tous les membres avec la meme valeur (disons 0, par exemple), rien de tel que:
char tableau[100] = {0};
Oui mais lors d'une RE-initialisation ?
#include <stdlib.h>
#include <stdio.h>
void print(char *tab, size_t nelem) { size_t i;
putc('[', stdout); for (i = 0; i < nelem - 1; i++) { printf("%3d, ", tab[i]); if (!((i+1) % 10)) printf("n "); } printf("%3d]n", tab[nelem - 1]); }
static char reinitialiseur[100] = {0};
int main(void) { char tableau[100] = {0}; size_t i;
for (i = 0; i < 100; i++) { tableau[i] = i; }
print(tableau, 100);
memcpy(tableau, reinitialiseur, sizeof reinitialiseur); /* la, je dois avouer, memcpy est necessaire :-/ */
print(tableau, 100);
return 0; }
-- Bertrand Mollinier Toublet "Bikes are like ladies, if you don't take care of them all the time, when you feel like going back to them, it takes a lot of work" -- Riccardo Turchetto
AG wrote:
Finalement, pour initialiser un tableau entier avec tous les membres
avec la meme valeur (disons 0, par exemple), rien de tel que:
char tableau[100] = {0};
Oui mais lors d'une RE-initialisation ?
#include <stdlib.h>
#include <stdio.h>
void print(char *tab, size_t nelem)
{
size_t i;
putc('[', stdout);
for (i = 0; i < nelem - 1; i++)
{
printf("%3d, ", tab[i]);
if (!((i+1) % 10)) printf("n ");
}
printf("%3d]n", tab[nelem - 1]);
}
static char reinitialiseur[100] = {0};
int main(void)
{
char tableau[100] = {0};
size_t i;
for (i = 0; i < 100; i++)
{
tableau[i] = i;
}
print(tableau, 100);
memcpy(tableau, reinitialiseur, sizeof reinitialiseur);
/* la, je dois avouer, memcpy est necessaire :-/ */
print(tableau, 100);
return 0;
}
--
Bertrand Mollinier Toublet
"Bikes are like ladies, if you don't take care of them all the time,
when you feel like going back to them, it takes a lot of work"
-- Riccardo Turchetto
Finalement, pour initialiser un tableau entier avec tous les membres avec la meme valeur (disons 0, par exemple), rien de tel que:
char tableau[100] = {0};
Oui mais lors d'une RE-initialisation ?
#include <stdlib.h>
#include <stdio.h>
void print(char *tab, size_t nelem) { size_t i;
putc('[', stdout); for (i = 0; i < nelem - 1; i++) { printf("%3d, ", tab[i]); if (!((i+1) % 10)) printf("n "); } printf("%3d]n", tab[nelem - 1]); }
static char reinitialiseur[100] = {0};
int main(void) { char tableau[100] = {0}; size_t i;
for (i = 0; i < 100; i++) { tableau[i] = i; }
print(tableau, 100);
memcpy(tableau, reinitialiseur, sizeof reinitialiseur); /* la, je dois avouer, memcpy est necessaire :-/ */
print(tableau, 100);
return 0; }
-- Bertrand Mollinier Toublet "Bikes are like ladies, if you don't take care of them all the time, when you feel like going back to them, it takes a lot of work" -- Riccardo Turchetto
Emmanuel Delahaye
In 'fr.comp.lang.c', "Vadis" wrote:
Bonjour;
Plutôt que d'utiliser une boucle pour initialiser un tableau, je prefere utiliser la fonction memset ou l'équivalent API windows FillMemory ou encore ZeroMemory.
boucle:
for(i=0 ; i<100 ; tableau[i++]=0) {};
memset: memset(Tableau,0,sizeof(Tableau)) ;
Ca dépend de ce tu initialises. Pour de char ou des entiers non signés, ça peut aller (et encore pas toujours). Mais pour des flottants ou des pointeurs c'est déjà plus chaud. Bref, à éviter au niveau application (a mettre éventuellement dans des macros ou fonctions dépendantes de l'implémentation si c'est sans danger avec celle-ci).
#else # define SYS_CLR(p, T) do { static const T z = {0}; *(p) = z; } while(0) #endif
-- -ed- [remove YOURBRA before answering me] The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html <blank line> FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', "Vadis" <vadis@wanadoo.fr> wrote:
Bonjour;
Plutôt que d'utiliser une boucle pour initialiser un tableau, je prefere
utiliser la fonction memset ou l'équivalent API windows FillMemory ou
encore ZeroMemory.
boucle:
for(i=0 ; i<100 ; tableau[i++]=0) {};
memset:
memset(Tableau,0,sizeof(Tableau)) ;
Ca dépend de ce tu initialises. Pour de char ou des entiers non signés, ça
peut aller (et encore pas toujours). Mais pour des flottants ou des pointeurs
c'est déjà plus chaud. Bref, à éviter au niveau application (a mettre
éventuellement dans des macros ou fonctions dépendantes de l'implémentation
si c'est sans danger avec celle-ci).
Plutôt que d'utiliser une boucle pour initialiser un tableau, je prefere utiliser la fonction memset ou l'équivalent API windows FillMemory ou encore ZeroMemory.
boucle:
for(i=0 ; i<100 ; tableau[i++]=0) {};
memset: memset(Tableau,0,sizeof(Tableau)) ;
Ca dépend de ce tu initialises. Pour de char ou des entiers non signés, ça peut aller (et encore pas toujours). Mais pour des flottants ou des pointeurs c'est déjà plus chaud. Bref, à éviter au niveau application (a mettre éventuellement dans des macros ou fonctions dépendantes de l'implémentation si c'est sans danger avec celle-ci).