CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Tableau à deux dimensions: help !

bigjump
bigjump
Niveau 5
18 mai 2011 à 22:26:54

Bonjour, :)
je souhaite créer une grille pour un jeu.
Pour cela je fais un tableau à deux dimensions de type Tpion (contenant donc des pions).

Voici ma fonction creerGrille qui se charge de créer une grille.

Tpion creerGrille()
{
Tpion grille[25][25] = {0};

return grille;
}

A la compilation, j'obtiens l'erreur suivante:

error: incompatible types when returning type 'struct Tpion (*)[25]' but 'Tpion' was expected

Pouvez-vous m'aider ? merci :merci:

caelacanthe
caelacanthe
Niveau 10
18 mai 2011 à 22:53:04

t'es supposé retourner le même truc que décrit dans le type de retour :oui:

Tpion[][] creerGrille()
{
Tpion grille[25][25] = {0};

return grille;
}

et là, ça marche :cool: (oopas, j'utilise pas les tableaux comme ça :hap: )

Pocolo
Pocolo
Niveau 10
18 mai 2011 à 23:10:41

Non, ça ne marchera pas ton truc.

caelacanthe
caelacanthe
Niveau 10
18 mai 2011 à 23:31:27

mais qu'est-ce qui marchera, alors? j'ai plus l'habitude des malloc :(

bigjump
bigjump
Niveau 5
18 mai 2011 à 23:42:43

Il faut utiliser un malloc ? :(

Paulop
Paulop
Niveau 12
19 mai 2011 à 00:02:46

Ta fonction ne peut pas fonctionner, ton tableau est détruit à la fin de la fonction, tu vas renvoyer un pointeur vers quelque chose détruit et tu aura un segmentation fault.

  1. define X 10
  2. define Y 10

// Bien !
void init_tab( int tab[X][Y] )
{
int i,j;
for ( i = 0; i < X ; i++)
for( j = 0; j < Y; j++)
tab[i][j] = i;
}

// Pas bien !
int ** init_tab2 ()
{
int tab[X][Y] = {0};
}

int main(int argc, char **argv)
{
int tab[X][Y];

int ** tab2 = init_tab2();

int i,j;

init_tab ( tab );

for ( i = 0; i < X; i ++)
{
for ( j = 0; j < Y ; j++ )
{
printf("%d",tab[i][j]); // affiche correctement
}
}
for ( i = 0; i < X; i ++)
{
for ( j = 0; j < Y ; j++ )
{
printf("%d",tab2[i][j]); // Segfault
}
}
return 0;
}

Si tu veux quand même avoir une fonction "créerGrille" il faut que tu utilises l'allocation dynamique et que tu renvoies un pointeur de pointeur :

Tpion ** creerGrille (int x , int y)
{
int i, j;
Tpion ** tab = malloc ( sizeof ( Tpion* ) * x );
for ( i = 0 ; i < x ; i ++ )
{
tab[i] = malloc ( sizeof ( Tpion ) * y );
for ( j = 0 ; j < y ; j ++ )
{
tab[i][j] = i;
}
}
return tab;
}

Paulop
Paulop
Niveau 12
19 mai 2011 à 00:04:00

Au passage : http://bellard.org/jslinux/
Pratique pour compiler un truc quand on à rien d'autre sous la main :oui:

Il y a vi et tcc inclus dans la distrib. (entre autres)

caelacanthe
caelacanthe
Niveau 10
19 mai 2011 à 00:13:18
  1. bigjump Voir le profil de bigjump
  2. Posté le 18 mai 2011 à 23:42:43 Avertir un administrateur
  3. Il faut utiliser un malloc ? :(

:d) pas forcément, c'est plus une question d'habitude dans mon cas :(

mais je crois me souvenir qu'on peut gérer ça rien qu'avec des crochets :hap:

bigjump
bigjump
Niveau 5
19 mai 2011 à 00:23:46

Merci Paulop, je comprends mieux ! :)

Nightmarez
Nightmarez
Niveau 9
19 mai 2011 à 01:56:47

Dans ce cas la, quand tu vas faire un return, il faut que tu ais une variable Tpion[25][25] qui va prendre les valeurs de ton tableau. Donc au final ca revient au meme.

Ce que tu peux faire, c'est alloue dynamiquement cette variable et renvoyer l'adresse.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment