Rumah > pembangunan bahagian belakang > C++ > Dalam bahasa C, fungsi bersarang

Dalam bahasa C, fungsi bersarang

WBOY
Lepaskan: 2023-09-06 13:57:06
ke hadapan
1237 orang telah melayarinya

Dalam bahasa C, fungsi bersarang

Dalam sesetengah aplikasi, kami mendapati bahawa beberapa fungsi diisytiharkan di dalam fungsi lain. Ini kadangkala dipanggil fungsi bersarang, tetapi ia sebenarnya bukan fungsi bersarang. Ini dipanggil skop leksikal. Dalam C, skop leksikal tidak mempunyai kesan kerana pengkompil tidak dapat mencari lokasi memori yang betul bagi fungsi dalaman.

Takrifan fungsi bersarang tidak boleh mengakses pembolehubah setempat bagi blok sekeliling. Mereka hanya boleh mengakses pembolehubah global. Dalam C, terdapat dua skop bersarang: tempatan dan global. Oleh itu, fungsi bersarang mempunyai beberapa kegunaan terhad. Jika kita ingin membuat fungsi bersarang seperti di bawah, ralat akan dihasilkan.

Contoh

#include <stdio.h>
main(void) {
   printf("Main Function");
   int my_fun() {
      printf("my_fun function");
      // defining another function inside the first function.
      int my_fun2() {
         printf("my_fun2 is inner function");
      }
   }
   my_fun2();
}
Salin selepas log masuk

Output

text.c:(.text+0x1a): undefined reference to `my_fun2&#39;
Salin selepas log masuk

Tetapi sambungan kepada pengkompil GNU C membolehkan fungsi bersarang diisytiharkan. Untuk melakukan ini, kita perlu menambah kata kunci auto sebelum pengisytiharan fungsi bersarang.

Contoh

#include <stdio.h>
main(void) {
   auto int my_fun();
   my_fun();
   printf("Main Function</p><p>");
   int my_fun() {
      printf("my_fun function</p><p>");
   }
   printf("Done");
}
Salin selepas log masuk

Output

my_fun function
Main Function
Done
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam bahasa C, fungsi bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan