IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

tableau de structure


Sujet :

C

  1. #1
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut tableau de structure
    Bonjour, je suis en train de faire "le jeux des carrés"
    J'ai besoins de passé en paramètre un tableau de structure à 2D par adresse, mais quoi que je fasse, j'ai un warnig avec des types incompatibles.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    #include <SDL/SDL.h>
    #include <stdio.h>
     
     
    typedef struct
    {
      int check;
      SDL_Rect pos;
      int clicked;
     
    }t_point;
     
    int draw_circle(SDL_Surface *screen, t_point *point[6][6])
    {
      SDL_Rect pos;
      SDL_Surface *rond;
     
      rond = SDL_LoadBMP("rond.bmp");
     
      if (rond == NULL)
        return (-1);
      for (pos.x=48;pos.x<480;pos.x+=(24+48))
        {
          for (pos.y=48;pos.y<480;pos.y+=72)
            {
              SDL_BlitSurface(rond,NULL,screen,&pos);
            }
        }
      return 0;
    }
     
     
    SDL_Surface *init_window(int x, int y, char *titre)
    {
      SDL_Surface *screen;
     
      if (SDL_Init(SDL_INIT_VIDEO == -1 ))
        return NULL;
      screen = SDL_SetVideoMode(x,y,32,SDL_HWSURFACE | SDL_DOUBLEBUF);
      SDL_WM_SetCaption(titre,NULL);
      return screen;
    }
     
    int set_background(SDL_Surface *screen,Uint32 color)
    {
      SDL_FillRect(screen,NULL,color);
    }
     
    Uint32 set_color(SDL_Surface *screen, int r, int g, int b)
    {
      return (SDL_MapRGB(screen->format,r,g,b));
    }
     
     
    int main(int argc, char **argv)
    {
      SDL_Surface *screen;
      SDL_Event event;
      Uint32 background_color;
      t_point point[6][6];
     
      if (!(screen = init_window(640,480,"Jeux")))
        {
          printf("Erreur lors de l'initialisation");
          return 1;
        }
      background_color = set_color(screen, 255, 255, 255);
     
      set_background(screen,background_color);
      if (draw_circle(screen,&point))
        {
          printf("Erreur lor du chargement de l'image");
          return 1;
        }
      while (event.type != SDL_QUIT)
        {
          SDL_PollEvent(&event);
          SDL_Flip(screen);
        }
     
      SDL_Quit();
      return 0;
    }

    ici, l'erreur survient à la fonction draw_cirlce
    Quand j'aurais finit, je posterai le code dans "contribution"

    Merci de votre aide !

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t_point point[6][6];
    ...
    draw_circle(screen,&point)
    L'argument &point est du type "adresse d'un tableau [6][6] de t_point", autrement dit t_point (*)[6][6]. Sans les parenthèses, t_point *[6][6], est un type tableau [6][6] de pointeurs sur tpoint

    Dans la déclaration int draw_circle(SDL_Surface *screen, t_point *point[6][6]), le type de point est "pointeur sur un élément du tableau". Les éléments de ce tableau sont des tableaux de 6 pointeurs sur tpoint et la déclaration est équivalente à tpoint * (*point)[6].
    Pour conformer ce paramètre à celui utilisé pour l'appel, on devrait avoir draw_circle(SDL_Surface *screen, t_point (*point)[6][6])
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    merci beaucoup, j'avais pas pensé au parethèses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  2. Tableau de structures en parametre d'une fonction
    Par -No Comment- dans le forum C
    Réponses: 19
    Dernier message: 29/03/2006, 15h00
  3. [VB6]Tri multi-colonnes sur tableau de structure
    Par ELGUEVEL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 08h02
  4. Réponses: 9
    Dernier message: 13/02/2006, 08h39
  5. Trier un tableau de structures
    Par Yux dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo