C Szerkezet és funkciók

Ebben az oktatóanyagban megtanulhatja strukturális változókat argumentumként átadni egy függvénynek. Megtanulja, hogy a függvényből struktúrát adjon vissza példák segítségével.

A beépített típusok változóihoz hasonlóan struktúraváltozókat is átadhat egy függvénynek.

Struktúrák átadása a funkcióknak

Javasoljuk, hogy tanulja meg ezeket az oktatóanyagokat, mielőtt megtanulná, hogyan adjuk át a struktúrákat a függvényeknek.

  • C szerkezetek
  • C funkciók
  • Felhasználó által definiált funkció

Így adhatja át a struktúrákat egy függvénynek

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

Kimenet

 Írja be a nevét: Bond Írja be az életkorát: 13 Információk megjelenítése Név: Bond Age: 13 

Itt egy s1 típusú strukturális változó struct studentjön létre. A változót utasítás display()segítségével adják át a függvénynek display(s1);.

A struktúra visszatérése egy függvényből

A struktúra visszaállítása egy függvényből a következőképpen történik:

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

Itt a getInformation()függvényt s = getInformation();utasítás segítségével hívjuk meg . A függvény egy típusú struktúrát ad vissza struct student. A visszaküldött struktúra a main()függvényből jelenik meg .

Figyelje meg, hogy a visszatérési típus getInformation()is struct student.

A struktúra átadása hivatkozással

A struktúrákat hivatkozással is átadhatja (hasonló módon, mint referenciaként adja át a beépített típusú változókat). Javasoljuk, hogy a folytatás előtt olvassa el az átadási útmutatót.

Hivatkozás útján a strukturális változók memória címei átkerülnek a függvényhez.

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

Kimenet

 Az első számhoz írja be a valós részt: 1.1 Írja be a képzeletbeli részt: -2,4 A második számhoz írja be a valós részt: 3.4 Írja be a képzeletbeli részt: -3,2 eredmény. Valós = 4,5 eredmény. Kép ​​= -5,6 

A fenti programban három c1, c2 szerkezeti változót és az eredmény címét adjuk át a addNumbers()függvénynek. Itt az eredményt referenciaként adjuk át.

Ha az eredményen belüli eredményváltozó addNumbers()megváltozik, a függvényen belüli eredményváltozó main()is ennek megfelelően módosul.

érdekes cikkek...