首頁> 後端開發> C++> 主體

在C語言中,巢狀函數

WBOY
發布: 2023-09-06 13:57:06
轉載
1138 人瀏覽過

在C語言中,巢狀函數

在某些應用程式中,我們發現有些函數是在另一個函數內部宣告的。這有時被稱為巢狀函數,但實際上這不是巢狀函數。這稱為詞法作用域。在C中,詞法作用域無效,因為編譯器無法找到內部函數的正確記憶體位置。

巢狀函數定義無法存取周圍區塊的局部變數。它們只能存取全域變數。在C中,有兩個嵌套作用域:局部和全域。因此,巢狀函數有一些有限的用途。如果我們想建立像下面這樣的巢狀函數,將會產生錯誤。

範例

#include  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(); }
登入後複製

輸出

text.c:(.text+0x1a): undefined reference to `my_fun2'
登入後複製

但是GNU C編譯器的擴充功能允許宣告巢狀函數。為此,我們必須在巢狀函數的聲明之前添加auto關鍵字。

範例

#include  main(void) { auto int my_fun(); my_fun(); printf("Main Function

"); int my_fun() { printf("my_fun function

"); } printf("Done"); }

登入後複製

輸出

my_fun function Main Function Done
登入後複製

以上是在C語言中,巢狀函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!