Menguasai Struct C: Meneruskan, Mengembalikan, dan Penanganan Referensi
Struktur C: Meneruskan, Mengembalikan, dan Penanganan Referensi
Dalam pemrograman C, struktur memungkinkan Anda mengelompokkan data yang terkait ke dalam satu entitas. Panduan ini memandu Anda melalui tiga operasi penting dengan struct: meneruskan mereka ke fungsi, mengembalikan mereka dari fungsi, dan memanipulasi mereka melalui referensi. Setiap bagian mencakup penjelasan ringkas dan contoh yang berfungsi untuk memperkuat pemahaman Anda.
Meneruskan Struct ke Fungsi
Sama seperti tipe bawaan, variabel struct dapat diteruskan langsung ke fungsi. Sebelum menyelami, membantu untuk meninjau Struktur C, Fungsi C, dan fungsi yang ditentukan pengguna.
- Struktur C
- Fungsi C
- Fungsi yang ditentukan pengguna
Contoh berikut menunjukkan cara meneruskan struct student ke fungsi yang mencetak isinya.
#include <stdio.h> struct student { char name[50]; int age; }; // Prototipe fungsi void display(struct student s); int main() { struct student s1; printf("Masukkan nama: "); scanf("%[^ ]%%*c", s1.name); // baca hingga newline printf("Masukkan usia: "); scanf("%d", &s1.age); display(s1); // pass struct to function return 0; } void display(struct student s) { printf("\nMenampilkan informasi\n"); printf("Nama: %s", s.name); printf("\nUsia: %d", s.age); }
Keluaran
Masukkan nama: Bond Masukkan usia: 13 Menampilkan informasi Nama: Bond Usia: 13
Mengembalikan Struct dari Fungsi
Fungsi dapat mengembalikan seluruh struct, memungkinkan pemisahan yang bersih antara pengumpulan data dan pemrosesan. Contoh di bawah ini mengumpulkan informasi siswa di dalam fungsi dan mengembalikannya ke main.
#include <stdio.h> struct student { char name[50]; int age; }; // Prototipe fungsi struct student getInformation(); int main() { struct student s; s = getInformation(); printf("\nMenampilkan informasi\n"); printf("Nama: %s", s.name); printf("\nUsia: %d", s.age); return 0; } struct student getInformation() { struct student s1; printf("Masukkan nama: "); scanf("%[^ ]%%*c", s1.name); printf("Masukkan usia: "); scanf("%d", &s1.age); return s1; }
Tipe pengembalian fungsi cocok dengan struct yang dikembalikan, memastikan keamanan tipe dan kejelasan.
Meneruskan Struct oleh Referensi
Ketika Anda perlu fungsi untuk memodifikasi struct, teruskan alamatnya (yaitu, pointer). Ini analog dengan meneruskan tipe bawaan oleh referensi. Contoh berikut menambahkan dua bilangan kompleks dan menyimpan hasilnya melalui pointer.
#include <stdio.h> typedef struct Complex { float real; float imag; } complex; void addNumbers(complex c1, complex c2, complex *result); int main() { complex c1, c2, result; printf("Untuk angka pertama,\n"); printf("Masukkan bagian real: "); scanf("%f", &c1.real); printf("Masukkan bagian imajiner: "); scanf("%f", &c1.imag); printf("Untuk angka kedua,\n"); printf("Masukkan bagian real: "); scanf("%f", &c2.real); printf("Masukkan bagian imajiner: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("\nresult.real = %.1f\n", 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 angka pertama, Masukkan bagian real: 1.1 Masukkan bagian imajiner: -2.4 Untuk angka kedua, Masukkan bagian real: 3.4 Masukkan bagian imajiner: -3.2 result.real = 4.5 result.imag = -5.6
Karena result diteruskan oleh referensi, semua perubahan di dalam addNumbers segera mempengaruhi variabel di main.
Dengan menguasai teknik-teknik ini, Anda dapat menulis kode C yang lebih modular, mudah dibaca, dan efisien yang memanfaatkan kekuatan penuh struktur.