Consultez gratuitement nos différents cours

  • L'accord du sujet verbe (Français)

    Le verbe s'accorde en genre et en nombre avec son sujet. Exemple1: Les enfants jouent dans la cour. La femme pleure dans la case. Enfants: Sujet Jouent: verbe femme: Sujet pleure: verbe Quand plusieurs verbe ont un même sujet, chaque verbe s'accorde avec le sujet. Exemple: Les pigeons jouaient, voltigeaient, se poursuivaient, picoraient les insectes. Pigeons: sujet jouaient, voltigeaient, poursuivaient, picoraient : verbes. Quand un verbe a plusieurs sujets juxtaposés ou coordonnés par "et" ou...

    Lire la suite : L'accord du sujet verbe

  • Réseaux linéaires en régime permanent (Science physique)

    Définitions et généralités Un réseau est un ensemble de conducteurs reliés entre eux et contenant en général des générateurs, des récepteurs et des résistances. Un noeud est un point du réseau où sont connectés plus de deux conducteurs. Une branche est une portion du réseau située entre deux noeuds. Une maille est un ensemble de branchement formant un circuit fermé qui ne passe qu'une fois par un noeud donné. Dans les réseaux, le problème qui se pose est le suivant: Les résistances, les forces...

    Lire la suite : Réseaux linéaires en régime permanent

  • Construction d'un diagramme ombrothermique (Géographie)

      Comment construire le diagramme?   Pour construire un diagramme ombrothermique on porte sur l'axe horizontal des mois de l'années, sur l'axe verticale les températures à droite les précipitations à gauche. Il faut aussi respecter la règle suivante: une précipitation égale 2 température, c'est-à-dire que sur la ligne verticale une température de 10° égale à une précipitation de 20mm. On représente des précipitations mensuelles par des colonnes et les températures mensuelles par des points qu'on...

    Lire la suite : Construction d'un diagramme ombrothermique

  • Moteur compound (Machines électriques)

    Moteur compound à flux additif Ici le moteur a les propriétés intermédiaires entre celle du moteur Shunt et le moteur série. A vide et à faible charge I étant faible, il y'a peu d'Ampère tour série et les propriétés sont Shunts. Au fur et à mesure que la charge augmente, les propriétés se rapprochent du type série. En conséquence: Le moteur ne s'emballe pas à vide (Shunt). Il possède un bon couple de démarrage en charge (série) Moteur compound à flux soustractif L'enroulement série comporte très...

    Lire la suite : Moteur compound

Eléments de base du langage C

Index de l'article


Transmission d'une structure en paramètre (argument)

 

Transmission de la valeur d'une structure

 

Aucun problème particulier ne s'oppose, il s'agit tout simplement d'appliquer ce que nous connaissons déjà.
Exemple:

 

#include< stdio.h >

 

struct enreg {

 

int a;

 

float b;

 

};

 

main()

 

{

 

struct enreg x;

 

void fct(struct enreg)

 

x.a=1; x.b=12.5;

 

printf("Après appel de fct: %d, %e", x.a, x.b);

 

fct(x);

 

printf("Après apel de fct: %d, %e", x.a, x.b);

 

return 0;

 

}

 

void fct(struct enreg S) {

 

S.a=0;

 

S.b=1;

 

printf("Dans fct: %d, %e", S.a, S.b);

 

{
Les résultats affichés sont:
avant appel de fct: 1, 12.5
dans fct: 0, 1
après appel de fct: 1, 12.5

Naturellement les valeurs de x sont recopiées localement dans la fonction fct lors de sont appel. Les modifications de S au sein de fct n'ont aucune incidence sur les valeurs de x.

 

Transmission de l'adresse d'une structure

 

L'appel de fct devient fct(&x), cela signifie que l'en-tête devient void fct(struct enreg *S).
Ici le problème se pose lors de l'accès à chaque champ de la structure S.
L'opérateur "." ne convient plus, deux solutions s'offrent:

  • On peut utiliser la notation (*S).a et (*S).b pour désigner chaque champ de la structure d'adresse S
  • On peut faire appel à un nouvel opérateur noté , lequel permet d'accéder aux différents champs d'une structure à partir de son adresse de début.

On aura:
S→a = (*S).a
S→b = (*S).b

Notre programme devient alors:

 

#include< stdio.h >

 

struct enreg {

 

int a;

 

float b;

 

} ;

 

main()

 

{

 

struct enrteg x;

 

void fct(struct enreg);

 

x.a=1;

 

x.b=12.5;

 

printf("Avant appel de fct: %d, %e", x.a, x.b);

 

fct(&x);

 

printf("Après appel de fct: %d, %e", x.a, x.b);

 

return 0;

 

}

 

void fct (struct enreg *S) {

 

S → a=0;

 

S → b=1;

 

printf("\n Dans fct, %d %e", S→a, S→b);

 

}