C Struktura in funkcije

V tej vadnici se boste naučili predajati spremenljivke struct kot argumente funkciji. S pomočjo primerov se boste naučili vrniti struct iz funkcije.

Podobno kot spremenljivke vgrajenih tipov lahko tudi funkciji posredujete strukturne spremenljivke.

Prenos struktur v funkcije

Priporočamo vam, da se naučite teh vadnic, preden se naučite, kako predati strukture v funkcije.

  • C strukture
  • C funkcije
  • Uporabniško določena funkcija

Evo, kako lahko funkciji prenesete strukture

 #include struct student ( char name(50); int age; ); // function prototype void display(struct student s); int main() ( struct student s1; printf("Enter name: "); // read string input from the user until is entered // is discarded scanf("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); display(s1); // passing struct as an argument return 0; ) void display(struct student s) ( printf("Displaying information"); printf("Name: %s", s.name); printf("Age: %d", s.age); )

Izhod

 Vnesite ime: Bond Vnesite starost: 13 Prikažite podatke Ime: Bond Starost: 13 

Tu struct studentje ustvarjena strukturna spremenljivka s1 tipa . Spremenljivka se posreduje display()funkciji z uporabo display(s1);stavka.

Vrni strukturo iz funkcije

Evo, kako lahko iz funkcije vrnete strukturo:

 #include struct student ( char name(50); int age; ); // function prototype struct student getInformation(); int main() ( struct student s; s = getInformation(); printf("Displaying information"); printf("Name: %s", s.name); printf("Roll: %d", s.age); return 0; ) struct student getInformation() ( struct student s1; printf("Enter name: "); scanf ("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); return s1; ) 

Tu se getInformation()funkcija pokliče z uporabo s = getInformation();stavka. Funkcija vrne strukturo tipa struct student. Vrnjena struktura se prikaže iz main()funkcije.

Upoštevajte, da getInformation()je tudi vrsta vrnitve struct student.

Prenos strukture po referenci

Strukture lahko posredujete tudi po referenci (na podoben način kot spremenljivke vgrajenega tipa po referenci). Pred nadaljevanjem vam predlagamo, da preberete referenčno vadnico.

Med prenosom po referenci se pomnilniški naslovi strukturnih spremenljivk posredujejo funkciji.

 #include typedef struct Complex ( float real; float imag; ) complex; void addNumbers(complex c1, complex c2, complex *result); int main() ( complex c1, c2, result; printf("For first number,"); printf("Enter real part: "); scanf("%f", &c1.real); printf("Enter imaginary part: "); scanf("%f", &c1.imag); printf("For second number, "); printf("Enter real part: "); scanf("%f", &c2.real); printf("Enter imaginary part: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("result.real = %.1f", result.real); printf("result.imag = %.1f", result.imag); return 0; ) void addNumbers(complex c1, complex c2, complex *result) ( result->real = c1.real + c2.real; result->imag = c1.imag + c2.imag; ) 

Izhod

 Za prvo številko vnesite dejanski del: 1.1 Vnesite namišljeni del: -2.4 Za drugo številko vnesite resnični del: 3.4 Vnesite namišljeni del: -3.2 rezultat.real = 4.5 rezultat.imag = -5.6 

V zgornjem programu se addNumbers()funkciji posredujejo tri strukturne spremenljivke c1, c2 in naslov rezultata . Tu se rezultat posreduje po sklicu.

Ko addNumbers()se spremeni spremenljivka rezultata znotraj main()funkcije, se ustrezno spremeni tudi spremenljivka rezultata znotraj funkcije.

Zanimive Članki...