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

fonction c++

neg282
neg282
Niveau 7
29 septembre 2004 à 20:57:42

J´aimerai faire une fonction qui stock la valeur 0 dans une partie de la mémoire, mais je ne sais pas trop comment m´y prendre.

Je pense quelle aura a peu près cette tete :

void fonction(void* p)
{
/ * mais que mettre ici ? ?? */
}

OxFFFF
OxFFFF
Niveau 8
29 septembre 2004 à 21:00:53

?

C´est pour faire quoi ?
Parce que je voix pas trop l´utilité...
Une variable locale suffirait certainement.
Sinon faudrait faire de l´allocation de mémoire, mais je vois pas l´intérêt de la chose...

neg282
neg282
Niveau 7
29 septembre 2004 à 21:07:28

c´est sur que comme ca, on voit pas trop l´utilité, mais avec le reste de mon code autour, on comprend un peu mieu. La deuxieme raison, c´est que c´est quelque chose que je sais pas faire, et je veux savoir faire.

LGV
LGV
Niveau 28
29 septembre 2004 à 21:24:15

passe pas un pointeur void... Ou alors cast le ( seulement si on sait ce qu´on fait.. d´aucun diront que c´est crade.. bof :) )
si tu passes un pointeur valide, tu peux bien y mettre ce que tu veux... ex :

void lodsb(char *p, char c)
{
*p = c;
}

et que tu appelles :

char c;
lodsb(&, ´a´);

ça marche tres bien... Pis si tu veux un bout de mémoire à tripoter manuellement, un coup de new, comme :

char *pC = new char();
lodsb(pC, ´a´);
delete pC;

ça marche aussi... de meme que :

char *pC = reinterpret_cast<char *>(::operator new(sizeof(char)));
lodsb(pC, ´a´);
::operator delete(pC);

bref, autant de variantes que tu veux...

JeanYvesYves
JeanYvesYves
Niveau 10
29 septembre 2004 à 21:50:58

sinon, tu peux faire :

int* fonction(int x)
{
int *t;
t=new int;

  • t=x;

return t;
}

pas tres utile bien sur, cette fonction ! mais bon je l´explique :

int* fonction(int x)
--> tu lui donne un x, elle te renvoie l´ADRESSE d´un int.

int* t; --> pointeur sur int ( donc une adresse)
t = new int;
--> cherche en mémoire une place pour ranger un int. ça te trouve ça, et donc ça te renvoie une adresse, que tu récuperes dans t

  • t = x
  • t veut dire " a l´adresse t"

et donc :

  • t = x --> a l´adresse t, on met x

donc tu as créé qq part, une case de mémoire, tu as mis x dans cette case, et t te dit ou elle est.

tu retourne t;

a la sortie de fonction, t est détruit, mais l´adresse retournée est encore valide, et la zone mémoire réservée est toujours valide.

pour la libérer, tu fais :

delete t;

bienvenue dans le monde de l´allocation dynamique :)

Kelios
Kelios
Niveau 8
29 septembre 2004 à 22:54:59

Strictement impossible avec un void, vu qu´il ne contient malheureusement pas de taille.
Cepandant, tu peux forcer la taille avec un autre paramètre qui indiquerait le nombre d´octets à partir de l´adresse pointée par p.

void fonction(void* p, unsigned int size)
{
if(!size || ! p) return;

for(;size>0; --size)
( (char*)p)[size-1] = 0;
}

Si tu comprend pas une partie de mon code ben demande et je t´explique. Si tu comprends rien, je m´en excuse alors, je dois vraiment coder comme un porc ( c) 2004 Log All Rights Reserved " Copyright violators will be hung"

P.S.:
mêmeuhseteuh c´est pas pour les chiens ^^
Bon vu que c´est au noble but pédagogique...

Kelios
---------

paradox-
paradox-
Niveau 6
29 septembre 2004 à 23:07:04

void *__cdecl memset(void, int, unsigned int) même...

dnob700
dnob700
Niveau 10
29 septembre 2004 à 23:23:16

yavait pas une fonction zeromem ou un truc dans le genre ?

LGV
LGV
Niveau 28
29 septembre 2004 à 23:30:40

le ZeroMemory(void *, size_t) est dispo en win32

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