Résolu [c] tableau deux dimension en argument ...

Solutions (9)
Tags :
  • Syntaxe
  • Token
  • Programmation
, Programmation (collector) |
Bonjours, voila j'ai un tableau a 2 dimension dont la taille reste fixe ...

donc dans mon code j'ai :

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. void init_plateau(int **tab);
  6.  
  7.  
  8. int main()
  9. {
  10. int plateau[3][3];
  11. init_plateau(plateau);
  12.  
  13. return 0;
  14. }
  15.  
  16. void init_plateau(int **tab)
  17. {
  18. tab = {{0,0,0},{0,0,0},{0,0,0}};
  19.  
  20. }


mais lors de la compilation j'ai :error: expected expression before '{' token a la ligne : tab = {{0,0,0},{0,0,0},{0,0,0}};

je ne comprend cette erreur ... [:gooniz:9]
Contenus similaires
Meilleure solution
partage
|
Salut,

Je pense que c'est plutôt que l'utilisation de la syntaxe {{0,0,0},{0,0,0},{0,0,0}} est possible uniquement à la déclaration du tableau.
De plus si tu dois le passer en paramètre, son type c'est int (*tab)[3] plutôt que int **tab :) 
  • Commenter cette solution |
Score
0
òh
òi
, Programmation (collector) |
Merci , je vais voir pour charger ma variable depuis un fichier
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
Meilleure réponse sélectionnée par andrelec1.
  • Commenter cette réponse |
Score
0
òh
òi
|
Oui, ce n'est qu'un mécanisme d'initialisation. Tu peux passer par une autre variable initialisée, mais pour faire la copie, il te faudra faire un memcpy(). Tu peux aussi utiliser memset() si c'est pour tout initialiser à 0, mais le mieux reste le tableau dynamique (et le memset pour tout mettre à 0). Le memset pouvant être remplacé par les 2 boucles déjà présentées.

Ps: Attention, (*tab)[3] est un tableau de 3 pointeurs, alors que tab[3][3] est un tableau à 2 dimensions : pas d'adresse mémorisé, et les lignes se suivent en mémoire (d'où une initialisation possible en statique).
  • Commenter cette réponse |
Score
0
òh
òi
|
Simplement en l'initialisant dés la déclaration ?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5. int plateau[3][3] = {{0,0,0},{0,0,0},{0,0,0}};
  6. return 0;
  7. }


Sinon en le chargeant depuis un fichier, csv par exemple.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
Citation :
Je pense que c'est plutôt que l'utilisation de la syntaxe {{0,0,0},{0,0,0},{0,0,0}} est possible uniquement à la déclaration du tableau.


c'est ce que je pense ...

mais du coup comment déclarais mon tableau a la main sans que cela ne devienne trop barban ?
car au final mon tableau vas faire 33*113 ...
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
ouai mais c'est un tableau a 2 dimensions, donc faut pas que tu fasse
tab = {{0,0,0},{0,0,0}} et non tab = {{0,0,0},{0,0,0},{0,0,0}}
Il me semble...
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
entait le tableau au final vas faire 33ligne et 113 colonnes que je vais remplir a la main car les valeur qu'il contiens aucun lien entre elle ...

pour ça que j'utilise cette forme :
tab = {{0,0,0},{0,0,0},{0,0,0}};
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
essaye ça :

  1. void init_plateau( int* tableau, int taille_1, int taille_2 )
  2. {
  3. for ( int i = 0; i<taille_1; i++ )
  4. {
  5. for ( int j = 0; j < taille_2; j++ )
  6. tableau[i][j] = 0;
  7. }
  8. }
  9.  
  10.  
  11. int main()
  12. {
  13. int plateau[3][3];
  14. init_plateau(plateau[0],3,3);
  15. return 0;
  16. }
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS