Mengisytiharkan Penuding Fungsi
Penuding kepada fungsi
Mengisytiharkan Penuding Fungsi ialah pelajaran C Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C Academy merangkumi sejumlah 4 pelajaran.
Fungsi Mempunyai Alamat
Sama seperti data, setiap fungsi berada pada suatu alamat dalam memori. Penuding fungsi menyimpan alamat itu supaya anda boleh 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 Pengisytiharan
Pengisytiharan int (*fp)(int) bermaksud: fp ialah penuding kepada fungsi yang menerima int dan memulangkan int.
Tanda kurungan di sekeliling *fp diperlukan.
#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 merosot menjadi alamatnya, jadi fp = square dan fp = &square adalah setara.
#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 Penuding
Anda boleh memanggil melalui penuding fungsi dengan fp(args) atau (*fp)(args) yang ditulis secara jelas. Kedua-duanya melakukan perkara 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;
}Tanda Tangan Mesti Sepadan
Jenis penuding fungsi merangkumi jenis pulangan dan jenis parameter. Anda hanya boleh menetapkan fungsi yang tanda tangannya sepadan dengan tepat.
#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 Semula Semasa Masa Jalan
Penuding fungsi ialah pemboleh ubah, jadi anda boleh mengarahkannya kepada fungsi yang berbeza semasa atur cara 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 Syarat
Pilih fungsi yang hendak dipanggil berdasarkan nilai masa jalan, kemudian panggilnya melalui satu penuding.
#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 Kebolehbacaan
Sintaks penuding fungsi adalah panjang. typedef memberikan nama kepada jenis tersebut, lalu menjadikan pengisytiharan 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 Dua Argumen
Penuding fungsi boleh menerangkan apa-apa tanda tangan. Berikut ialah satu penuding untuk operasi integer binari.
#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;
}Penuding Fungsi NULL
Seperti penuding data, penuding fungsi boleh menjadi NULL. Sentiasa semak sebelum memanggil penuding 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 boleh memeriksa alamat yang disimpan. Fungsi yang berbeza mempunyai alamat yang berbeza.
#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;
}Semakan Ringkas
Uji pemahaman anda tentang pengisytiharan penuding fungsi.
Imbas Kembali
Anda telah mempelajari cara mengisytiharkan dan menggunakan penuding fungsi:
- Sintaks:
ret (*name)(params)dengan tanda kurungan yang diperlukan. - Tetapkan menggunakan nama fungsi kerana nama itu merosot menjadi alamat.
- Panggil dengan
fp(args)atau(*fp)(args). - Tanda tangan mesti sepadan;
typedefmeningkatkan kebolehbacaan.
Pelajari C dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 39
- Pelajaran
- 144
Soalan Lazim
Adakah pelajaran “Mengisytiharkan Penuding Fungsi” percuma?
Ya — teks penuh “Mengisytiharkan Penuding Fungsi” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus C Academy, tingkat taraf kepada CoddyKit PRO. Kursus C Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengisytiharkan Penuding Fungsi”?
Penuding kepada fungsi Anda berlatih C Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan C Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran C Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Mengisytiharkan Penuding Fungsi” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran C Academy ini?
Ya. Setiap pelajaran C Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengisytiharkan Penuding Fungsi
- Menghantar Fungsi
- qsort dengan Pembanding
- Jadual Penuding Fungsi