Šajā apmācībā jūs iemācīsities struktūras mainīgos kā argumentus nodot funkcijai. Jūs iemācīsities atgriezt struktūru no funkcijas, izmantojot piemērus.
Līdzīgi kā iebūvēto tipu mainīgajiem, struktūras mainīgos var nodot arī funkcijai.
Struktūru nodošana funkcijām
Mēs iesakām jums iemācīties šīs apmācības, pirms jūs uzzināt, kā nodot struktūras funkcijām.
- C struktūras
- C funkcijas
- Lietotāja definēta funkcija
Lūk, kā jūs varat nodot struktūras funkcijai
#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); )
Rezultāts
Ievadiet vārdu: Obligācija Ievadiet vecumu: 13 Parādiet informāciju Nosaukums: Obligāciju vecums: 13
Šeit tiek izveidots strukturālais mainīgais s1 struct student
. Mainīgais tiek nodots display()
funkcijai, izmantojot display(s1);
priekšrakstu.
Atgriezt struktūru no funkcijas
Lūk, kā jūs varat atgriezt struktūru no funkcijas:
#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; )
Šeit getInformation()
funkciju sauc, izmantojot s = getInformation();
paziņojumu. Funkcija atgriež tipa struktūru struct student
. Atgrieztā struktūra tiek parādīta no main()
funkcijas.
Ievērojiet, ka atgriešanās veids getInformation()
ir arī struct student
.
Struktūras nodošana pēc atsauces
Struktūras var nodot arī atsauces veidā (līdzīgi kā jūs nododat iebūvēta tipa mainīgos pēc atsauces). Pirms turpināt, mēs iesakām izlasīt apmācību caur atsauci.
Norādes laikā struktūras mainīgo atmiņas adreses tiek nodotas funkcijai.
#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; )
Rezultāts
Pirmajam skaitlim ievadiet reālo daļu: 1.1 Ievadiet iedomāto daļu: -2,4 Otrajam skaitlim ievadiet reālo daļu: 3,4 Ievadiet iedomāto daļu: -3,2 rezultāts. Reāls = 4,5 rezultāts. Attēls = -5,6
Iepriekš minētajā programmā addNumbers()
funkcijai tiek nodoti trīs struktūras mainīgie c1, c2 un rezultāta adrese . Šeit rezultāts tiek nodots atsauces veidā.
Mainot rezultāta mainīgo iekšpusē, attiecīgi addNumbers()
tiek mainīts arī rezultāta mainīgais main()
funkcijas iekšpusē .