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/C++] Retour de fonction

Mouuh
Mouuh
Niveau 6
17 septembre 2004 à 11:43:34

Bonjour à tous.

J´ai une deuxième question sur le " style" de programmation que vous utilisez.

J´aimerais savoir si vous faites toujours retourner quelque chose par vos fonctions.

Plus précisemment, est-ce que lorsque une fonction n´est pas sencé renvoyé une valeure, comme par exemple une fonction que ne ferais qu´afficher du texte, la typez-vous avec void ou avec int, histoire de controller toutes les fonctions ?
J´avais lu sur les fora de développez.com, qu´une personne faisait toujours retourner quelque chose à ses fonctions parce que cela lui semblait plus propre.
Je ne suis pas une bête en programmation et par conséquent mais programmes ne sont pas pensé au mieux mais lorsque je vois une colonne de prototype typé avec void quelque part cela me parait un peu crade aussi.

Que faites-vous ? Qu´en pensez-vous ?

LGV
LGV
Niveau 28
17 septembre 2004 à 14:49:14

perso je trouve ca assez rebarbatif de toujours retourner, ca te fait passer les sorties par adresse, et sur le retour tu recuperes un code d´erreur souvent inutile...
Donc moi je type le retour selon ce que j´ai besoin , et je ne check que ce qui est necessaire ( et si erreur il y a, je sorts un rapport d´erreur indiquant le fichier, la ligne, et pourquoi ca foire). Et souvent j´aime bien enchainer les appels de methodes sur mes objets ; je m´imagine mal faire vec3.normalise() qui renvoit true ou false... parce que je je trouverai pratique a un moment d´appeler cette methode au milieu d´une expresion.
Enfin, c´est comme les conventions de nommage : question de conviction personnelle...

MathieuN7
MathieuN7
Niveau 10
17 septembre 2004 à 15:03:25

on peut faire une fonction void en C? :question:

Mouuh
Mouuh
Niveau 6
17 septembre 2004 à 15:09:09

MathieuN7 > ben oui... pourquoi on pourrait pas ?

void Mouuh(int n);

int main(void)
{
Mouuh(1);
return 0;
}

void Mouuh(int n)
{
printf("%d", n);
}

MathieuN7
MathieuN7
Niveau 10
17 septembre 2004 à 15:12:48

jsais pas, j´avais cru lire qu´on pouvait pas...

Et au passage: ça fait 2j que je fais du C et j´arrive pas à demander au gars osn prénom, puis à l´afficher, j´ai tapé ça:
int main()
{
char * pnom1;
printf("Entre ton pseudo: " );
scanf("%s", &1);
printf("%s", *pnom1);
return 0;
}

Mais ça bug à l´éxécution... Qqn peut me donner la marche à suivre?

DasHuhn
DasHuhn
Niveau 10
17 septembre 2004 à 17:32:37

Dans ton programme, tu fais deux erreurs : primo tu ne précises pas la taille de ce que tu réserves pour le pnom, tu te contentes de dire que c´est un pointeur vers une chaîne qui réside en mémoire. Mais... C ne fait pas l´allocation à ta place !

Ensuite dans le printf, tu utilises un pointeur alors qu´il n´est pas nécessaire ( et si j´avais vraiment compris ce que c´était, je dirais vraiment ce que ça fait).

MathieuN7
MathieuN7
Niveau 10
17 septembre 2004 à 18:59:20

ben le pointeur du printf il sert à afficher la chaine...
Et comment jpeux faire pour allouer de la mémoire? :question:

LGV
LGV
Niveau 28
17 septembre 2004 à 19:50:41

la version C, c´est des ( cast)malloc(size), la version C++, c´est du reinterpret_cast<type>(::operator new(size)) ( meme si on préfera masquer cette alloc C++ par une construction d´objet en regle...)

MathieuN7
MathieuN7
Niveau 10
17 septembre 2004 à 20:28:53

c´est pour moi cette réponse? Si oui, pourrais-tu m´expliquer un ptit peu? Parce que je sais pas où mettre tout ça, ni quoi mettre dans les parenthèses...

LGV
LGV
Niveau 28
17 septembre 2004 à 21:46:18

alors... quand on sait pas, on va voir la doc :) ZE bon reflexe... tu chopes la doc de ton compilo, ou la msdn en ligne, ou ce que tu veux, tu regardes à malloc, et y´a tout : les paramètres, les explications, et un exemple d´utilisation. Si tu bloques toujours, là on verra le détail...

MathieuN7
MathieuN7
Niveau 10
17 septembre 2004 à 21:47:11

ah oui la msdn...
Désolé! je n´ai pas ce reflex :honte:
Bon ben je vais voir alors :) désolé encore!

dnob700
dnob700
Niveau 10
17 septembre 2004 à 22:41:45

moi quand une fonction ne renvoie pas de valeur, je la déclare toujours void,

sauf dans le cas où il est prévue qu´elle peut echouer ( par exemple, ouverture du presse papier) et dans ce cas là, je les fait renvoyer des bool pour faire simple, ou bien ça marche, ou bien ça marche pas...

Mouuh
Mouuh
Niveau 6
18 septembre 2004 à 15:22:44

MathieuN7 > As-tu déjà fait du C++ avant ? Si non, tu ne devrais pas tout de suite faire mumuse avec les pointeurs et d´abord maîtriser les bases comme la saisie et l´affichage, on s´embrouille vite ( moi en tout cas) à tout mélanger dès le début.

Si oui, tu devras prendre de nouvelles habitudes et laisser celles du C++ de côté.

Cela devrait marcher:

  1. include < stdio.h>

int main(void)
{
char nom[30];
printf("Entre ton nom : " );
fgets(nom, 30, stdin);
printf("%s", nom); return 0;
}

MathieuN7
MathieuN7
Niveau 10
18 septembre 2004 à 16:23:28

oui j´ai fait du C++ avant! :)

Altonfrere
Altonfrere
Niveau 10
18 septembre 2004 à 16:40:50

Disons qu´en algorithmique toute fonction est censée retourner une valeur . .. c´est la définition même d´une fonction. Dans le cas contraire on appelle ca une procédure :) Donc ce n´est pas la peine de retourner quelquechose si ce n´est pas nécessaire, dans ce cas il s´agit d´une procédure. En C ou C++ la distinction n´existe pas ( dans la notation à part le fait de marquer void ou le type de la valeur retournée), mais dans d´autres langages comme le pascal c´est le cas ( procedure, function . .)

Yoda_Software
Yoda_Software
Niveau 30
22 septembre 2004 à 22:30:29

:ok:

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