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

[C] Une question sur les pointeurs

playstate
playstate
Niveau 9
03 juillet 2010 à 15:29:10

Bonjour à tous.
J'ai un problème lié aux pointeurs, j'utilise la SDL.

Donc je crée une surface avec un pointeur

SDL_Surface *screen = NULL;
initSDL(ecran) //et je l'envoie dans une fonction que j'ai crée içi pour initialiser la SDL

Je le receptionne enfin dans ma fonction

void initSDL(SDL_Surface *screen)
{
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO)<0)
{
fprintf(stderr,"Erreur : %s",SDL_GetError());
EXIT_FAILURE;
}
screen = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE | SDL_DOUBLEBUF);

SDL_FillRect(screen,NULL,SDL_MapRGB(screen->format
,255,255,255));
SDL_Flip(screen);
}

La fonction initialise tout et à la fin de la fonction screen != NULL par contre, et c'est la mon problème, quand je retroune dans le main screen == NULL.
Normalement comme screen de la fonction initSDL pointe sur screen du main elle devrait lui donner sa valeur non ?

Merci.

dnob700
dnob700
Niveau 10
03 juillet 2010 à 15:46:03

non. Pour ça, le plus simple est de ne pas passer d'argument à initSDL qui crée elle même le pointeur et le reçoit à la fin. Ou alors, il faut que la fonction reçoive un SDL_Surface** pour qu'elle puisse modifier la valeur du pointeur et non pas seulement la valeur de ce qui est pointé par celui-ci (ce qu'elle ne fait pas là). Mais la première solution est plus simple et meilleure (car la fonction n'utilise pas la valeur de son argument de toutes manières, donc il est inutile de le lui passer).

playstate
playstate
Niveau 9
03 juillet 2010 à 17:09:53

Merci beaucoup j'ai fait ta première méthode pour screen sa marche je l'ai donc crée dans initSDL mais par contre si je crée une nouvelle surface dans le main (SDL_Surface *rectangle par exemple) le programme se lance mais il disparait immédiatement sans indiqué d'erreur mais par contre si je crée une surface dans le initSDL le programme se lance et reste affiché (jusqu'à ce qu'on appuie sur la croix) et je ne voie pas de quoi sa peut venir.

Merci.

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