C Yapısı ve Fonksiyonları

Bu eğitimde, yapı değişkenlerini bağımsız değişken olarak bir işleve aktarmayı öğreneceksiniz. Örnekler yardımıyla bir fonksiyondan yapı döndürmeyi öğreneceksiniz.

Yerleşik türlerin değişkenlerine benzer şekilde, yapı değişkenlerini bir işleve de aktarabilirsiniz.

Yapıları işlevlere geçirme

Yapıları işlevlere nasıl geçireceğinizi öğrenmeden önce bu eğitimleri öğrenmenizi tavsiye ettik.

  • C yapıları
  • C fonksiyonları
  • Kullanıcı tanımlı İşlev

Yapıları bir işleve nasıl geçireceğiniz aşağıda açıklanmıştır

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

Çıktı

 İsim girin: Bond Yaş girin: 13 Bilgi görüntüleniyor İsim: Bond Yaş: 13 

Burada, tipte bir yapı değişkeni s1 struct studentoluşturulur. Değişken, ifade display()kullanılarak işleve aktarılır display(s1);.

Bir işlevden yapı döndür

Bir işlevden yapıyı şu şekilde döndürebilirsiniz:

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

Burada getInformation()işlev, using s = getInformation();deyimi olarak adlandırılır . İşlev bir tür yapısı döndürür struct student. Döndürülen yapı, main()işlevden görüntülenir .

Dikkat edin, dönüş türü getInformation()de öyle struct student.

Yapıyı başvuruya göre geçirme

Yapıları başvuruya göre de iletebilirsiniz (yerleşik türdeki değişkenleri başvuruya göre ilettiğiniz gibi). Devam etmeden önce referansla geçiş eğitimini okumanızı öneririz.

Başvuruya göre geçiş sırasında, yapı değişkenlerinin bellek adresleri işleve aktarılır.

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

Çıktı

 İlk numara için, Gerçek kısmı girin: 1.1 Sanal kısmı girin: -2.4 İkinci numara için, gerçek kısmı girin: 3.4 Sanal kısmı girin: -3.2 sonuç.gerçek = 4.5 sonuç.imag = -5.6 

Yukarıdaki programda c1, c2 olmak üzere üç yapı değişkeni ve sonucun adresi addNumbers()fonksiyona aktarılır . Burada sonuç referans olarak aktarılır.

İçindeki sonuç değişkeni addNumbers()değiştirildiğinde, main()işlevin içindeki sonuç değişkeni de buna göre değiştirilir.

Ilginç makaleler...