Téléchargement d'épreuves

et

Cours gratuits

Eléments de base du langage C - Transmission d'une structure en paramètre

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);

 

}

 

Consultez gratuitement nos différents cours

  • La formación del plural (Espagnol)

    El alumno charla durante la clase de español El niño llora porque tiene hombre Los alumnos charlan Los niños lloran porque tiene hombre NB: La palabras terminadas por vocales no acentuada forman su plural con s El profesor: entra en el aula Tú tienes el papel Los profesores entrañen el... Tú temes los papeles NB:Las palabras terminadas por consonantes forman en plural con es. El marroquí es blanco. NB:Los que se terminan por í forman su plural con es Algunas particularidades en el plural La canción...

    Lire la suite : La formación del plural

  • Travaux dirigés (Réseaux informatiques)

    Exercice 1 Faire une étude comparative entre les protocoles TCP et UDP. Faire ressortir les ressemblances et les divergences. Précisez leurs utilisations respectives. Exercice 2 Selon vous les routeurs interviennent-ils dans les informations véhiculées dans le protocole TCP? Exercice 3 Les ports et les services: Identifiez les différents ports ainsi que les services offerts dans un environnement TCP/IP. Utilisez le système d'exploitation Windows XP. Correction de l'exercice 2 Lors du transport des...

    Lire la suite : Travaux dirigés

  • Les déformations des roches (Géologie)

    Les roches sont les matériaux constitutifs de l'écorce terrestre. Une strate est une couche continue de segment de même type. Les forces internes du globe entraînent des déformations de l'écorce terrestre. Dans le matériel souple, les strates dessinent les ondulations ou plis. Dans le matériel rigide (solide), on note les cassures ou failles Les déformations souples: les plis Un pli est une ondulation du terrain dans laquelle la continuité des couches est conservée. On distingue: Le pli bombé...

    Lire la suite : Les déformations des roches

  • Médiatrice d'un segment (Mathématique)

    Propriété de la médiatrice d'un segment Activité (D) est la médiatrice du segment [AB]. Placez quatre points N; M et Q sur la droite (D) Comparez: MA et MB NA et NB PA et PB QA et QB Que constatez-vous? Propriété Si un point appartient à la médiatrice d'un segment alors il est équidistant des extrémités de ce segment. Propriété réciproque Si un point est équivalant des extrémités d'un segment, alors il appartient à la médiatrice de ce segment. Utilisation du compas pour construire ...

    Lire la suite : Médiatrice d'un segment