C Rakenne ja toiminnot

Tässä opetusohjelmassa opit välittämään rakennemuuttujat argumentteina funktiolle. Opit palauttamaan funktion funktiosta esimerkkien avulla.

Samoin kuin sisäänrakennettujen tyyppien muuttujissa, voit myös siirtää rakennemuuttujia funktiolle.

Rakenteiden välittäminen toiminnoille

Suosittelemme, että opit nämä opetusohjelmat ennen kuin opit siirtämään rakenteita funktioille.

  • C-rakenteet
  • C-toiminnot
  • Käyttäjän määrittelemä toiminto

Näin voit siirtää rakenteita funktiolle

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

Tuotos

 Anna nimi: Bond Anna ikä: 13 Näytetään tiedot Nimi: Bond Age: 13 

Tässä struct studentluodaan tyyppinen rakennemuuttuja s1 . Muuttuja välitetään display()funktiolle display(s1);lauseen avulla.

Palaa funktion funktiosta

Näin voit palauttaa rakenteen funktiosta:

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

Tässä getInformation()funktiota kutsutaan s = getInformation();lauseella. Funktio palauttaa tyypin rakenteen struct student. Palautettu rakenne näytetään main()funktiosta.

Huomaa, että palautustyyppi getInformation()on myös struct student.

Rakenteen siirtäminen viitteenä

Voit välittää rakenteet myös viitteenä (samalla tavalla kuin välität sisäänrakennetun tyypin muuttujia viitteellä). Suosittelemme, että luet ohjearvon opas ennen kuin jatkat.

Viittauksen aikana rakennemuuttujien muistiosoitteet välitetään funktiolle.

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

Tuotos

 Syötä ensimmäiselle numerolle todellinen osa: 1.1 Syötä kuvitteellinen osa: -2,4 Toiselle numerolle, kirjoita todellinen osa: 3.4 Syötä kuvitteellinen osa: -3,2 tulos. Real = 4,5 tulos. Kuva = -5,6 

Yllä olevassa ohjelmassa kolme rakennemuuttujaa c1, c2 ja tuloksen osoite välitetään addNumbers()funktiolle. Tässä tulos välitetään viitteenä.

Kun tulosmuuttujaa addNumbers()muutetaan, main()funktion sisällä olevaa tulosmuuttujaa muutetaan vastaavasti.

Mielenkiintoisia artikkeleita...