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

Dalam bahasa C, fungsi bersarang

WBOY
WBOYke hadapan
2023-09-06 13:57:061191semak imbas

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();
}

Output

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

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");
}

Output

my_fun function
Main Function
Done

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

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam