Mendeklarasikan Pointer Fungsi
Pointer ke fungsi.
Mendeklarasikan Pointer Fungsi adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.
Fungsi Memiliki Alamat
Sama seperti data, setiap fungsi berada di suatu alamat dalam memori. Pointer fungsi menyimpan alamat tersebut sehingga Anda dapat memanggil fungsi secara tidak langsung.
#include <stdio.h>
void greet(void) { printf("hello\n"); }
int main(void) {
void (*fp)(void) = greet;
fp();
return 0;
}Membaca Deklarasi
Deklarasi int (*fp)(int) berarti: fp adalah pointer ke fungsi yang menerima int dan mengembalikan int.
Tanda kurung di sekitar *fp wajib digunakan.
#include <stdio.h>
int square(int x) { return x * x; }
int main(void) {
int (*fp)(int) = square;
printf("%d\n", fp(5));
return 0;
}Menetapkan Fungsi
Nama fungsi berubah menjadi alamatnya, sehingga fp = square dan fp = &square memiliki arti yang sama.
#include <stdio.h>
int dbl(int x) { return x * 2; }
int main(void) {
int (*fp)(int);
fp = &dbl;
printf("%d\n", fp(7));
return 0;
}Memanggil Melalui Pointer
Anda dapat memanggil fungsi melalui pointer fungsi dengan fp(args) atau (*fp)(args) secara eksplisit. Keduanya melakukan hal yang sama.
#include <stdio.h>
int add1(int x) { return x + 1; }
int main(void) {
int (*fp)(int) = add1;
printf("%d\n", fp(10));
printf("%d\n", (*fp)(10));
return 0;
}Signature Harus Cocok
Tipe pointer fungsi mencakup tipe nilai balik dan tipe parameternya. Anda hanya dapat menetapkan fungsi yang signature-nya benar-benar cocok.
#include <stdio.h>
double half(double x) { return x / 2.0; }
int main(void) {
double (*fp)(double) = half;
printf("%f\n", fp(9.0));
return 0;
}Menetapkan Ulang Saat Program Berjalan
Pointer fungsi adalah variabel, sehingga Anda dapat mengarahkannya ke fungsi yang berbeda saat program berjalan.
#include <stdio.h>
int inc(int x) { return x + 1; }
int dec(int x) { return x - 1; }
int main(void) {
int (*op)(int) = inc;
printf("%d\n", op(5));
op = dec;
printf("%d\n", op(5));
return 0;
}Memilih Berdasarkan Kondisi
Pilih fungsi yang akan dipanggil berdasarkan nilai saat program berjalan, lalu panggil melalui satu pointer.
#include <stdio.h>
int plus(int a) { return a + 10; }
int minus(int a) { return a - 10; }
int main(void) {
int up = 1;
int (*op)(int) = up ? plus : minus;
printf("%d\n", op(100));
return 0;
}typedef untuk Kemudahan Membaca
Sintaks pointer fungsi cukup panjang. typedef memberi nama pada tipe tersebut sehingga deklarasi menjadi lebih jelas.
#include <stdio.h>
typedef int (*IntOp)(int);
int triple(int x) { return x * 3; }
int main(void) {
IntOp op = triple;
printf("%d\n", op(4));
return 0;
}Fungsi dengan Dua Argumen
Pointer fungsi dapat menjelaskan signature apa pun. Berikut adalah pointer untuk operasi bilangan bulat biner.
#include <stdio.h>
int sum(int a, int b) { return a + b; }
int main(void) {
int (*op)(int, int) = sum;
printf("%d\n", op(3, 4));
return 0;
}Pointer Fungsi NULL
Seperti pointer data, pointer fungsi dapat bernilai NULL. Selalu lakukan pemeriksaan sebelum memanggil pointer yang mungkin belum ditetapkan.
#include <stdio.h>
int twice(int x) { return x * 2; }
int main(void) {
int (*op)(int) = NULL;
if (op == NULL) op = twice;
if (op) printf("%d\n", op(8));
return 0;
}Mencetak Alamat
Anda dapat memeriksa alamat yang tersimpan. Fungsi yang berbeda memiliki alamat yang berbeda.
#include <stdio.h>
int f(int x) { return x; }
int main(void) {
int (*fp)(int) = f;
printf("function pointer is %s\n", fp ? "set" : "null");
return 0;
}Pemeriksaan Singkat
Uji pemahaman Anda tentang deklarasi pointer fungsi.
Ringkasan
Anda telah mempelajari cara mendeklarasikan dan menggunakan pointer fungsi:
- Sintaks:
ret (*name)(params)dengan tanda kurung yang wajib. - Tetapkan menggunakan nama fungsi, yang berubah menjadi alamat.
- Panggil dengan
fp(args)atau(*fp)(args). - Signature harus cocok;
typedefmeningkatkan keterbacaan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendeklarasikan Pointer Fungsi” gratis?
Ya — teks lengkap “Mendeklarasikan Pointer Fungsi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mendeklarasikan Pointer Fungsi”?
Pointer ke fungsi. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C Academy?
Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mendeklarasikan Pointer Fungsi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?
Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mendeklarasikan Pointer Fungsi
- Meneruskan Fungsi
- qsort dengan Comparator
- Tabel Pointer Fungsi