У овом упутству научићете да преносите структурне променљиве као аргументе функцији. Научићете да враћате струцт из функције помоћу примера.
Слично варијаблама уграђених типова, такође можете пренијети структурне варијабле функцији.
Преношење структура у функције
Препоручили смо вам да научите ове водиче пре него што научите како преносити структуре функцијама.
- Ц структуре
- Ц функције
- Кориснички дефинисана функција
Ево како можете проследити структуре функцији
#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); )
Оутпут
Унесите име: Бонд Унесите старост: 13 Приказивање података Име: Бонд Старост: 13
Овде struct student
се креира структурна променљива с1 типа . Променљива се преноси display()
функцији помоћу display(s1);
израза.
Врати структуру из функције
Ево како можете вратити структуру из функције:
#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; )
Овде се getInformation()
функција позива помоћу s = getInformation();
наредбе. Функција враћа структуру типа struct student
. Враћена структура приказује се из main()
функције.
Приметите да getInformation()
је и врста повратка ис struct student
.
Пролаз структуру по референци
Такође можете проследити структуре по референци (на сличан начин као што преносите променљиве уграђеног типа по референци). Предлажемо вам да прочитате водич за прослеђивање пре него што наставите.
Током прослеђивања референцом, меморијске адресе структурних променљивих се преносе функцији.
#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; )
Оутпут
За први број унесите стварни део: 1.1 Унесите замишљени део: -2.4 За други број унесите стварни део: 3.4 Унесите замишљени део: -3.2 резултат.реал = 4.5 резултат.имаг = -5.6
У горњем програму, три променљиве структуре ц1, ц2 и адреса резултата прослеђују се addNumbers()
функцији. Овде се резултат прослеђује референцом.
Када је променљива резултата унутар функције addNumbers()
промењена, променљива резултата унутар main()
функције такође се мења у складу с тим.