C語言中使用靜態函數的好處

靜態函數會被自動分配在一個一直使用的存儲區,直到退出應用程序實例,避免了調用函數時壓棧出棧,速度快很多。
關鍵字“static”,譯成中文就是“靜態的”,所以內部函數又稱靜態函數但此處“static”的含義不是指存儲方式,而是指對函數的作用域僅局限于本文件。 使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數,是否會與其它文件中的函數同名,因為同名也沒有關系。

c語言中static的語義

1.static變量:

1).局部

a.靜態局部變量在函數內定義,生存期為整個源程序,但作用域與自動變量相同,只能在定義該變量的函數內使用。退出該函數后, 盡管該變量還繼續存在,但不能使用它。

b.對基本類型的靜態局部變量若在說明時未賦以初值,則系統自動賦予0值。而對自動變量不賦初值,則其值是不定的。

2).全局

? 全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。但是他們的作用域,非靜態全局 變量的作用域是整個源程序(多個源文件可以共同使用); 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。

2.static函數(也叫內部函數)只能被本文件中的函數調用,而不能被同一程序其它文件中的函數調用。

區別于一般的非靜態函數(外部函數) static在c里面可以用來修飾變量,也可以用來修飾函數。 先看用來修飾變量的時候。變量在c里面可分為存在全局數據區、棧和堆里。其實我們平時所說的堆棧是棧而不包含對,不要弄混。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254746.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254746.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254746.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

react+redux+generation-modation腳手架搭建一個todolist

TodoList1. 編寫actions.js2. 分析state 試著拆分成多個reducer3. 了解store4. 了解redux數據流生命周期5. 分析容器組件和展示組件 搞清楚,數據到底是如何流動的?6. 編寫展示組件的代碼7. 編寫容器組件8. 傳入store9. 總結10. 參考TodoList 腳手架Githu…

c++11 原子類型與原子操作

1、原子類型和原子操作(1)類型(2)操作(3)詳述● 原子類型只能從其模板參數類型中進行構造,標準不允許原子類型進行拷貝構造、移動構造,以及使用operator等● atomic_flag 是一個原子…

get_metrology_object_measures獲取測量區域和計量模型的計量對象的邊緣位置結果

目錄get_metrology_object_measures(算子)描述參數get_metrology_object_measures(算子) get_metrology_object_measures - 獲取測量區域和計量模型的計量對象的邊緣位置結果。 get_metrology_object_measures(&…

依弗科(上海)機電設備有限公司

機器人噴涂倒計時,上帝幫我實現愿望吧 阿門 

外部變量和外部函數

C程序由一組對象組成,這些對象包括程序中所使用的變量和實現特定功能的函數。變量可以分為函數內部定義、使用的變量和函數外部定義的變量,通常情況下,把函數內部定義、使用的變量稱為內部變量或局部變量,而將在函數外部定義的、供…

gulp中使用babel-polyfill編譯es6拓展語法

今天想在新項目中使用es6的generators,發現雖然gulp已經有了babel編譯,但仍會報錯,網上查找后發現解決辦法是加載polyfill,但是找到的辦法都不試用我的項目。 解決辦法:在index.html中加載node_modules的babel-polyfil…

CoDeSys

CoDeSys是全球最著名的PLC內核軟件研發廠家德國的3S(SMART,SOFTWARE,SOLUTIONS)公司出的一款與制造商無關的IEC 61131-1編程軟件。CoDeSys 支持完整版本的IEC61131標準的編程環境,支持標準的六…

使用halcon結合機械XY軸對相機進行9點標定

小哥哥小姐姐覺得有用點個贊唄! 先在halcon中計算仿射變換矩陣并驗證 //在圖像中找到的模板中心位置 PicX:[1680.721,2065.147,911.499,526.798,1290.920,1285.731,1300.953] PicY:[968.321,964.366,976.283,980.035, 587.055,394.727,1355.487] //與圖像中查找…

Ubuntu Linux 提出新的發布模式——測試周

2019獨角獸企業重金招聘Python工程師標準>>> 導讀開源技術項目最大的優勢之一就是社區的每個人都可以自由地提出想法,如果獲得社區支持,它可以變成現實。著名的 Ubuntu 開發人員 Simon Quigley 就提出了一個可能改變 Ubuntu Linux 開發過程的…

264 I和IDR

I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便,要首個I幀和其他I幀區別開,所以才把第一個首個I幀叫IDR,這樣就方便控制編碼和解碼流程。IDR幀的作用是立刻刷新,使錯誤不致傳播,從IDR幀開始,重新算一個新的序列…

gen_caltab生成標定文件

目錄gen_caltab(算子)描述參數gen_caltab(算子) gen_caltab - 為具有矩形排列標記的校準板生成校準板描述文件和相應的PostScript文件。 gen_caltab(:: XNum,YNum,MarkDist,Diamet…

主席樹,喵~

稍微總結一下主席樹吧 Too Difficult!搞了一天搞出一大堆怎么令人悲傷的辣雞代碼。總之先總結一下吧,以后碰到這種問題直接拿去毒害隊友好了。 UPD 5/24 茍狗是沙比 一個節點記錄三個信息:lson,rson,sum 用pid表示節點個數。 build void buil…

【轉】小白級的CocoaPods安裝和使用教程

原文網址:http://www.jianshu.com/p/e2f65848dddc 百度有很多CocoaPods的安裝教程.第一次看的時候,確實有點摸不透的感覺.經過思考,一步一步來實踐,前后花了三十幾分鐘,才順利使用..所以想了想,我還是寫一個小白級的教程吧.細到每一個細節都說明. 讓你不用10分鐘解決…

常見錯誤總結

少打頭文件 少打using namespace std; 命名沖突&#xff0c;全局變量與局部變量命名一致&#xff0c;導致使用的值不是期望值 邊讀邊寫&#xff0c;導致改后讀&#xff0c;覆蓋寫入的值 長整數移位溢出&#xff0c;1<<63是錯誤的&#xff0c;應該寫成1ll<<63 循環變…

x264_sps_init

x264_sps_init此函數為序列量化集的初始化。主要對結構體x264_sps_t中參數的初始化。 void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ) { sps->i_id i_id;首先設置序列參數集的ID b_qpprime_y_zero_transform_bypass判斷碼率控制方法是否是恒定質量…

HALCON相機標定相機內參相機外參

目錄相機標定1.相機標定是什么2.怎么使用halcon進行相機內外參標定&#xff1f;&#xff08;1&#xff09;搭建硬件1.**相機連好電腦&#xff0c;用相機廠家軟件打開相機&#xff0c;檢查一下相機是否正常。**2.**接下來使用halcon連接相機**&#xff08;2&#xff09;開始標定…

ionic更改端口號

ionic serve -p 8888 —— 重新指定端口號為8888 serve [options] ............................... 啟動本地服務器進行開發測試 dev/testing   [--consolelogs|-c] ..................... 輸入app的控制臺到ionic的控制臺顯示   [--serverlogs|-s] .....................…

angular change the url , prevent reloading

http://stackoverflow.com/questions/14974271/can-you-change-a-path-without-reloading-the-controller-in-angularjs $location.search({vln: $scope.vln_id}, false);會改變url中 &#xff1f; 后面的 搜索參數&#xff0c;但是controller不會重新實例化。angular 官方文檔…