Dalam tutorial ini, Anda akan belajar meneruskan variabel struct sebagai argumen ke suatu fungsi. Anda akan belajar mengembalikan struct dari fungsi dengan bantuan contoh.
Mirip dengan variabel jenis built-in, Anda juga dapat meneruskan variabel struktur ke suatu fungsi.
Meneruskan struct ke fungsi
Kami merekomendasikan Anda untuk mempelajari tutorial ini sebelum Anda mempelajari cara meneruskan struct ke fungsi.
- Struktur C.
- Fungsi C.
- Fungsi yang Ditentukan Pengguna
Inilah cara Anda meneruskan struktur ke suatu fungsi
#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); )
Keluaran
Masukkan nama: Bond Umur: 13 Menampilkan informasi Nama: Bond Umur: 13
Di sini, variabel struct s1 tipe struct student
dibuat. Variabel diteruskan ke display()
fungsi menggunakan display(s1);
pernyataan.
Kembalikan struct dari suatu fungsi
Berikut cara mengembalikan struktur dari suatu fungsi:
#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; )
Di sini, getInformation()
fungsinya disebut using s = getInformation();
statement. Fungsi mengembalikan struktur tipe struct student
. Struktur yang dikembalikan ditampilkan dari main()
fungsi.
Perhatikan bahwa, tipe kembalian getInformation()
juga struct student
.
Meneruskan struct dengan referensi
Anda juga bisa meneruskan struct dengan referensi (dengan cara yang sama seperti Anda meneruskan variabel tipe built-in dengan referensi). Kami menyarankan Anda untuk membaca tutorial referensi lewat sebelum Anda melanjutkan.
Selama melewati referensi, alamat memori variabel struct diteruskan ke fungsi.
#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; )
Keluaran
Untuk bilangan pertama, Masukkan bagian nyata: 1.1 Masukkan bagian imajiner: -2.4 Untuk nomor kedua, Masukkan bagian nyata: 3.4 Masukkan bagian imajiner: -3.2 result.real = 4.5 result.imag = -5.6
Dalam program di atas, tiga variabel struktur c1, c2 dan alamat hasil diteruskan ke addNumbers()
fungsi. Di sini, hasil diteruskan dengan referensi.
Ketika variabel hasil di dalam addNumbers()
diubah, variabel hasil di dalam main()
fungsi juga diubah sesuai.