Dalam tutorial ini, anda akan belajar meneruskan pemboleh ubah struktur sebagai argumen ke fungsi. Anda akan belajar mengembalikan struktur dari fungsi dengan bantuan contoh.
Sama seperti pemboleh ubah jenis terbina dalam, anda juga dapat meneruskan pemboleh ubah struktur ke fungsi.
Menyampaikan struktur ke fungsi
Kami mengesyorkan anda mempelajari tutorial ini sebelum anda mengetahui cara menyampaikan struktur ke fungsi.
- Struktur C
- Fungsi C
- Fungsi yang ditentukan pengguna
Inilah cara anda boleh menyampaikan struktur ke 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); )
Pengeluaran
Masukkan nama: Bon Masukkan umur: 13 Memaparkan maklumat Nama: Umur Bon: 13
Di sini, struktur variabel s1 jenis struct student
dibuat. Pemboleh ubah diteruskan ke display()
fungsi menggunakan display(s1);
pernyataan.
Kembalikan struktur dari fungsi
Inilah cara anda dapat mengembalikan struktur dari 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()
fungsi dipanggil menggunakan s = getInformation();
pernyataan. Fungsi mengembalikan struktur jenis struct student
. Struktur yang dikembalikan dipaparkan dari main()
fungsi.
Perhatikan bahawa, jenis pengembalian getInformation()
juga struct student
.
Lulus struktur dengan rujukan
Anda juga boleh melewati struktur dengan merujuk (dengan cara yang serupa seperti anda meneruskan pemboleh ubah jenis terbina dalam dengan rujukan) Kami mencadangkan anda membaca tutorial rujukan demi langkah sebelum anda meneruskannya.
Semasa melalui rujukan, alamat memori pemboleh ubah struktur 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; )
Pengeluaran
Untuk nombor pertama, Masukkan bahagian nyata: 1.1 Masukkan bahagian khayalan: -2.4 Untuk nombor kedua, Masukkan bahagian nyata: 3.4 Masukkan bahagian khayalan: -3.2 hasil.real = 4.5 hasil.imag = -5.6
Dalam program di atas, tiga pemboleh ubah struktur c1, c2 dan alamat hasil diteruskan ke addNumbers()
fungsi. Di sini, hasil disampaikan melalui rujukan.
Apabila pemboleh ubah hasil di dalam addNumbers()
diubah, pemboleh ubah hasil di dalam main()
fungsi juga diubah sesuai.