Menu
CoddyTech

Mendeklarasikan Pointer Fungsi

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 33 dari 61.

Sejauh ini, kita telah belajar menyimulasikan pewarisan menggunakan penyematan struct. Namun, polimorfisme sejati, saat object yang berbeda merespons secara berbeda terhadap pemanggilan yang sama, membutuhkan sesuatu yang lebih: pointer fungsi.

Pointer fungsi adalah variabel yang menyimpan alamat suatu fungsi. Sama seperti pointer biasa yang menyimpan alamat data, pointer fungsi menyimpan alamat kode yang dapat dieksekusi.

Sintaksnya mungkin tampak mengintimidasi pada awalnya. Untuk mendeklarasikan pointer fungsi, tentukan tipe pengembalian, lalu nama pointer dalam tanda kurung dengan tanda bintang, diikuti tipe parameter:

int (*operation)(int, int);

Ini mendeklarasikan variabel bernama operation yang dapat menunjuk ke fungsi apa pun yang menerima dua parameter int dan mengembalikan int. Tanda kurung di sekitar *operation sangat penting, tanpa tanda kurung tersebut, kamu akan mendeklarasikan fungsi yang mengembalikan pointer.

Untuk menetapkan fungsi ke pointer ini, cukup gunakan nama fungsi tersebut (tanpa tanda kurung):

int add(int a, int b) {
    return a + b;
}

int (*operation)(int, int);
operation = add;  // Sekarang operation menunjuk ke add

Nama fungsi berfungsi sebagai alamatnya. Kamu juga dapat menggunakan &add secara eksplisit, tetapi ini opsional: kedua bentuk tersebut setara dalam C.

challenge icon

Tantangan

Mudah

Mari berlatih mendeklarasikan pointer fungsi dan menetapkan fungsi kepadanya. Kamu akan membuat sistem operasi matematika sederhana, tempat sebuah pointer fungsi dapat menyimpan berbagai fungsi aritmetika.

Tulis program yang:

  1. Mendefinisikan dua fungsi:
    • multiply: menerima dua parameter int dan mengembalikan hasil perkaliannya
    • subtract: menerima dua parameter int dan mengembalikan hasil pengurangan nilai kedua dari nilai pertama
  2. Di dalam main, mendeklarasikan variabel pointer fungsi bernama operation yang dapat menunjuk ke fungsi yang menerima dua parameter int dan mengembalikan int
  3. Membaca tiga input: dua bilangan bulat dan kode operasi (1 untuk perkalian, 2 untuk pengurangan)
  4. Menetapkan fungsi yang sesuai ke pointer operation berdasarkan kode operasi
  5. Mencetak nama operasi yang ditetapkan, lalu mencetak hasil pemanggilan fungsi melalui pointer

Kamu akan menerima tiga input: bilangan pertama, bilangan kedua, dan kode operasi (1 atau 2).

Outputmu akan terlihat seperti ini:

Operation: multiply
Result: 35

Di sini, multiply adalah nama operasi (atau subtract jika kodenya 2), dan 35 adalah hasil pemanggilan fungsi melalui pointer-mu (dalam kasus ini, 5 × 7).

Ingat: untuk mendeklarasikan pointer fungsi, kamu memerlukan tipe pengembalian, nama pointer dalam tanda kurung dengan tanda bintang, dan tipe parameter. Untuk menetapkan fungsi, gunakan nama fungsi saja tanpa tanda kurung.

Coba sendiri

#include <stdio.h>

// TODO: Definisikan fungsi multiply di sini


// TODO: Definisikan fungsi subtract di sini


int main() {
    int num1, num2, code;
    
    // Baca input
    scanf("%d", &num1);
    scanf("%d", &num2);
    scanf("%d", &code);
    
    // TODO: Deklarasikan pointer fungsi bernama 'operation' yang dapat menunjuk ke
    // fungsi yang menerima dua parameter int dan mengembalikan int
    
    
    // TODO: Berdasarkan kode operasi (1 untuk multiply, 2 untuk subtract),
    // tetapkan fungsi yang sesuai ke pointer operation-mu
    
    
    // TODO: Cetak nama operasi dan hasilnya
    // Format:
    // Operasi: <name>
    // Hasil: <result>
    
    return 0;
}
quiz iconUji dirimu

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

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online