[C] donner valeurs à un tableau après déclara
Résolu/Fermé
SofLS
Messages postés
11
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
10 février 2012
-
24 juil. 2008 à 15:49
SofLS Messages postés 11 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 10 février 2012 - 25 juil. 2008 à 14:46
SofLS Messages postés 11 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 10 février 2012 - 25 juil. 2008 à 14:46
A voir également:
- [C] donner valeurs à un tableau après déclara
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Trier un tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
10 réponses
arkos78
Messages postés
618
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
3 septembre 2009
48
24 juil. 2008 à 15:52
24 juil. 2008 à 15:52
bonjour c très mauvais de remplir un tableau comme çela voit une autre méthode
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
24 juil. 2008 à 15:55
24 juil. 2008 à 15:55
essai :
const tab T1={...};
tab T2 = (tab){...};
int T3[10][10]=(int**){...};
const int T4[10][10]={...};// Celui là, au moins devrais fonctionné.
const tab T1={...};
tab T2 = (tab){...};
int T3[10][10]=(int**){...};
const int T4[10][10]={...};// Celui là, au moins devrais fonctionné.
SofLS
Messages postés
11
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
10 février 2012
24 juil. 2008 à 15:57
24 juil. 2008 à 15:57
Wouah ! Quelle rapidité!^^
Pourquoi c'est mauvais?
Je ne voies pas comment faire autrement, il n'y a aucune logique dans l'affectation des nombre du tableau, c'est une grille de jeu.
je peux pas faire un truc du genre :
for i
for j
tab1[i][j]=?
A moins qu'il y ai une méthode que je ne connaisse pas?
Pourquoi c'est mauvais?
Je ne voies pas comment faire autrement, il n'y a aucune logique dans l'affectation des nombre du tableau, c'est une grille de jeu.
je peux pas faire un truc du genre :
for i
for j
tab1[i][j]=?
A moins qu'il y ai une méthode que je ne connaisse pas?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
24 juil. 2008 à 16:04
24 juil. 2008 à 16:04
Si les tableau ne sont pas amener à changer, c'est une méthode que je ne trouve pas mauvaise.
Par contre, défini tes tableau comme étant constant.
Par contre, défini tes tableau comme étant constant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SofLS
Messages postés
11
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
10 février 2012
24 juil. 2008 à 16:10
24 juil. 2008 à 16:10
J'avais pas vu ta réponse Char Sniper,
j'ai testé 1,2 et 4 marchent.
En effet mes tableaux ne changeront pas, mais dans ce cas, il faut que je les définisse avec le type struct Jeu
const struct Jeu T1.Nombre={...} ne marche pas.
D'ailleurs il faudrait peut-être affecter des valeurs à Nombre et Solution en même temsp?
j'ai testé 1,2 et 4 marchent.
En effet mes tableaux ne changeront pas, mais dans ce cas, il faut que je les définisse avec le type struct Jeu
const struct Jeu T1.Nombre={...} ne marche pas.
D'ailleurs il faudrait peut-être affecter des valeurs à Nombre et Solution en même temsp?
SofLS
Messages postés
11
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
10 février 2012
24 juil. 2008 à 16:15
24 juil. 2008 à 16:15
J'ai réussi!
Pour ceux que ça interesse, il suffit de faire :
const struct Jeu T1={ {...}, {...} };
Merci pour votre aide!
Pour ceux que ça interesse, il suffit de faire :
const struct Jeu T1={ {...}, {...} };
Merci pour votre aide!
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
24 juil. 2008 à 16:34
24 juil. 2008 à 16:34
Je pense que c'est bon, mais c'est assez dangereux comme manière de faire !
As tu compris pourquoi ça fonctionnait ?
Si ce n'est pas le cas, ça me parait extremement dangereux ce que tu fais.
T1 est un tableau à trois dimension en fait.
As tu compris pourquoi ça fonctionnait ?
Si ce n'est pas le cas, ça me parait extremement dangereux ce que tu fais.
T1 est un tableau à trois dimension en fait.
SofLS
Messages postés
11
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
10 février 2012
24 juil. 2008 à 23:48
24 juil. 2008 à 23:48
Oui, j'ai compris... a moins qu'il y ait une astuce?
En fait ce que je ne comprends pas c'est pourquoi la déclaration de tab2 ne marche pas.
C'est vrai, T1 est un tab à 3 dimensions, j'avais pas vu! En même temps, je vais rajouter des choses dans ma structure plus tard.
En fait ce que je ne comprends pas c'est pourquoi la déclaration de tab2 ne marche pas.
C'est vrai, T1 est un tab à 3 dimensions, j'avais pas vu! En même temps, je vais rajouter des choses dans ma structure plus tard.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
25 juil. 2008 à 09:08
25 juil. 2008 à 09:08
à ce sujet, je te conseil de lire le chapitre7 (du moins le début) de ce livre :
https://beuss.developpez.com/tutoriels/pcasm/#LS1
Il m'a fait comprendre la nature des structures, et je pense qu'il t'aidera.
En revanche pour les histoires de tableau, c'est un peu plus compliqué, je n'ai pas de source. Mais j'ai eu plein de discussion sur ce forum qui en traitait.
En résumé (même si ça ne t'aide pas beaucoup) un tableau n'est pas un pointeur, mais peux se comporté comme tel dans certains cas particuliers, il se raproche du int*const (c'est le pointeur qui est constant et non la valeur pointé).
Lorsque tu utilise met {...} cela correspond en fait à un tableau constant de valeurs constantes ! Il faut donc faire attention à ce qu'on fait avec.
Par exemple, tu peux affecter ce tableau à un pointeur grâce au transtypage :
int* C;
C=(int*){1,2,3};
par contre, attention à ne pas faire de free sur C à ce moment là, ça causerai une erreur !
{1,2,3} est de type (int const * const).
https://beuss.developpez.com/tutoriels/pcasm/#LS1
Il m'a fait comprendre la nature des structures, et je pense qu'il t'aidera.
En revanche pour les histoires de tableau, c'est un peu plus compliqué, je n'ai pas de source. Mais j'ai eu plein de discussion sur ce forum qui en traitait.
En résumé (même si ça ne t'aide pas beaucoup) un tableau n'est pas un pointeur, mais peux se comporté comme tel dans certains cas particuliers, il se raproche du int*const (c'est le pointeur qui est constant et non la valeur pointé).
Lorsque tu utilise met {...} cela correspond en fait à un tableau constant de valeurs constantes ! Il faut donc faire attention à ce qu'on fait avec.
Par exemple, tu peux affecter ce tableau à un pointeur grâce au transtypage :
int* C;
C=(int*){1,2,3};
par contre, attention à ne pas faire de free sur C à ce moment là, ça causerai une erreur !
{1,2,3} est de type (int const * const).
SofLS
Messages postés
11
Date d'inscription
jeudi 24 juillet 2008
Statut
Membre
Dernière intervention
10 février 2012
25 juil. 2008 à 14:46
25 juil. 2008 à 14:46
Merci beaucoup pour le lien, le document est très interessant; et merci pour toutes tes explications!