Forum Programmation.c structure dans une fonction sans pointeur

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
10
mai
2019

Salut,

J'aimerai passé une structure comme argument sans pointeur dans une fonction:

j'ai fait cet essai et il marche bien
mais je veux savoir si c'est bien de ne pas utiliser les pointeurs et est ce que cet un code juste

Mon code C:

 struct number
{
int x;
int y;
};
 struct number number;


void numberfun(struct number g); 


int main ( int argc, char** argv )
{

  struct number p ;
   p.x =12;
   p.y =26;

   numberfun(p);

   return 0;
}


void numberfun(struct number g) {

 printf("%d , %d" , g.x , g.y);
}

Merci d'avance.

  • # Ça dépend...

    Posté par  . Évalué à 7.

    L'intérêt de l'usage de pointeurs dépends de plusieurs choses:

    • si tu veux que de potentielles modifications soient vues par la fonction appelante, c'est obligatoire;
    • si ta structure est plus petite ou de la même taille qu'un pointeur, et que tu ne veux pas utiliser le paramètre comme une sortie, c'est inutile, le passage par valeur est plus efficace;
    • tu peux vouloir passer une structure que tu modifieras localement dont le coût de construction serait plus élevé que le coût de copie, dans ce cas, le passage par valeur est mieux;
    • dans le cas ou tu veux juste passer une grosse structure en lecture seule, passer un pointeur vers une valeur constante est souvent le mieux;
    • il y a aussi, en C, le cas de la valeur optionnelle: passer un pointeur NULL permets de simuler une valeur optionnelle;

    D'autres expliqueront sûrement mieux que moi, ou ajouterons d'autres cas auxquels je n'ai pas pensé.

    • [^] # Re: Ça dépend...

      Posté par  . Évalué à 2.

      j'y pense, utiliser un passage par valeur peut aussi éventuellement permettre de passer des blocs mémoire de taille précise dans un environnement ou l'allocation dynamique (malloc, calloc, new) serait à proscrire (pas d'accès à une libc, coût de l'allocation dynamique trop élevé, etc).
      Bon, c'est juste une idée qui viens de me passer par la tête, c'est probablement assez fumeux.

  • # sécurité et pointeurs

    Posté par  . Évalué à 1.

    Merci pour ta réponse bien détaillé.

    Tu sais que mon autre problème c'est que j'ai vu sur internet que les pointeurs peuvent causer des problèmes de sécurité et puisque j'ai pas une bonne maitrise du C j'éssai le maximum de ne pas les utiliser

    • [^] # Re: sécurité et pointeurs

      Posté par  . Évalué à 3.

      Tu sais, le seul moyen de ne pas fabriquer des failles, c’est de ne pas développer.
      Les pointeurs ne sont qu’un outil, il faut apprendre à les utiliser, comprendre à quoi ils servent et enfin prendre suffisamment de recul pour savoir quand les utiliser ou non.
      Se limiter parce qu’il y a un risque n’est àmha pas la meilleure solution.

  • # utliser les bonnes balises quand on colle du code sur linuxfr

    Posté par  . Évalué à 2.

    la balise de code est ```
    suivi du langage, ici C

    quand tu tapes ton texte tu vas donc taper

    ```C
    ton code en C
    ```

    et ca fera la mise en forme pour toi

    NB : j'ai corrigé le post initial

  • # Merci

    Posté par  . Évalué à 1. Dernière modification le 12/05/19 à 03:37.

    Merci beaucoup je l'utiliserai la prochaine fois

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.