U ovom vodiču naučit ćete prosljeđivati strukturne varijable kao argumente funkciji. Naučit ćete vraćati struct iz funkcije uz pomoć primjera.
Slično varijablama ugrađenih tipova, također možete proslijediti strukturne varijable funkciji.
Prosljeđivanje struktura funkcijama
Preporučili smo vam da naučite ove vodiče prije nego što naučite kako prosljeđivati strukture funkcijama.
- C strukture
- C funkcije
- Korisnički definirana funkcija
Evo kako možete proslijediti strukture funkciji
#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); )
Izlaz
Unesite ime: Bond Unesite dob: 13 Prikazivanje podataka Ime: Bond Dob: 13 godina
Ovdje struct student
se kreira strukturna varijabla s1 tipa . Varijabla se prenosi display()
funkciji pomoću display(s1);
izraza.
Vrati strukturu iz funkcije
Evo kako možete vratiti strukturu iz funkcije:
#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; )
Ovdje se getInformation()
funkcija poziva pomoću s = getInformation();
naredbe. Funkcija vraća strukturu tipa struct student
. Vraćena struktura prikazuje se iz main()
funkcije.
Primijetite da je i vrsta povrata getInformation()
is struct student
.
Prolaženje struct po referenci
Strukture također možete proslijediti referencom (na sličan način kao što varijable ugrađenog tipa prosljeđujete referencom). Predlažemo vam da prije nastavka pročitate vodič za prosljeđivanje.
Tijekom prosljeđivanja putem reference, memorijske adrese strukturnih varijabli prenose se u funkciju.
#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; )
Izlaz
Za prvi broj unesite stvarni dio: 1.1 Unesite zamišljeni dio: -2.4 Za drugi broj unesite stvarni dio: 3.4 Unesite zamišljeni dio: -3.2 rezultat.real = 4.5 rezultat.imag = -5.6
U gornjem programu, tri strukturne varijable c1, c2 i adresa rezultata prosljeđuju se addNumbers()
funkciji. Ovdje se rezultat prosljeđuje referencom.
Kada addNumbers()
se promijeni rezultatska varijabla unutar main()
funkcije, promijeni se i odgovarajuća varijabla rezultata unutar funkcije.