Menu
CoddyTech

Mengirim Struct berdasarkan Nilai

Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 46 dari 63.

Sekarang setelah kamu tahu cara bekerja dengan struct dan pointer ke struct, saatnya belajar cara meneruskan seluruh struct ke fungsi. Saat kamu meneruskan struct ke fungsi sebagai parameter, C menggunakan pass-by-value, yang berarti fungsi menerima salinan lengkap struct tersebut.

Berikut sintaks untuk fungsi yang menerima parameter struct:

void functionName(struct StructureName parameterName) {
    // Isi fungsi
}

Menggunakan struct Point yang sudah kita kenal sebagai contoh:

void printPoint(struct Point p) {
    printf("Point coordinates: (%d, %d)\n", p.x, p.y);
}

Konsep utama yang perlu kamu pahami adalah bahwa perubahan apa pun yang kamu buat pada struct di dalam fungsi tidak akan memengaruhi struct asli di fungsi pemanggil. Ini karena fungsi bekerja dengan salinan datanya sendiri.

Pendekatan ini berguna saat kamu ingin membaca atau menampilkan data struct tanpa berisiko mengubah data aslinya secara tidak sengaja. Namun, perlu diingat bahwa menyalin struct berukuran besar dapat mengurangi efisiensi penggunaan memori dan performa.

challenge icon

Tantangan

Mudah

Buat program C yang menunjukkan cara meneruskan struct ke fungsi berdasarkan nilai. Programmu harus:

  1. Mendefinisikan struct bernama Rectangle dengan anggota berikut:
    • Bilangan bulat width untuk menyimpan lebar persegi panjang
    • Bilangan bulat height untuk menyimpan tinggi persegi panjang
    • Array karakter color berukuran 15 untuk menyimpan warna persegi panjang
  2. Menulis fungsi bernama displayRectangle yang:
    • Menerima struct Rectangle sebagai parameter (diteruskan berdasarkan nilai)
    • Mencetak informasi persegi panjang dengan format persis berikut:
      • Rectangle Details:
      • Width: [width]
      • Height: [height]
      • Color: [color]
      • Area: [area]
    • Menghitung dan mencetak luasnya (lebar × tinggi)
  3. Menulis fungsi bernama modifyRectangle yang:
    • Menerima struct Rectangle sebagai parameter (diteruskan berdasarkan nilai)
    • Menggandakan lebar dan tinggi persegi panjang
    • Mengubah warnanya menjadi "Modified"
    • Mencetak Inside modifyRectangle function:
    • Memanggil displayRectangle untuk menampilkan persegi panjang yang telah dimodifikasi
  4. Di fungsi main:
    • Membuat variabel Rectangle bernama rect
    • Membaca lebar, tinggi, dan warna dari input, lalu menetapkannya ke anggota struct
    • Mencetak Original rectangle:
    • Memanggil displayRectangle untuk menampilkan persegi panjang asli
    • Memanggil modifyRectangle dengan persegi panjang tersebut
    • Mencetak After modifyRectangle call:
    • Memanggil displayRectangle lagi untuk menunjukkan bahwa persegi panjang asli tidak berubah

Tantangan ini menunjukkan konsep penting meneruskan struct berdasarkan nilai: saat kamu meneruskan struct ke fungsi, fungsi menerima salinan lengkap struct tersebut. Setiap perubahan yang dilakukan di dalam fungsi hanya memengaruhi salinan, bukan struct asli dalam fungsi pemanggil.

Coba sendiri

#include <stdio.h>
#include <string.h>

// TODO: Definisikan struct Rectangle di sini

// TODO: Tulis fungsi displayRectangle di sini

// TODO: Tulis fungsi modifyRectangle di sini

int main() {
    // Baca input
    int width, height;
    char color[15];
    
    scanf("%d", &width);
    scanf("%d", &height);
    scanf("%s", color);
    
    // TODO: Buat variabel Rectangle dan isi dengan nilai input
    
    // TODO: Cetak "Original rectangle:" dan panggil displayRectangle
    
    // TODO: Panggil modifyRectangle
    
    // TODO: Cetak "After modifyRectangle call:" dan panggil displayRectangle lagi
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online