靜態(tài)函數(shù)(帶static的),外部文件無(wú)法使用該函數(shù)了,同樣的是定義靜態(tài)變量后,外部文件同樣不能使用;在工程中,通常各個(gè)模塊分開(kāi)完成,這時(shí)候如果確定自己定義的函數(shù)別的文件不會(huì)使用,就可以加上static,以保證不會(huì)被誤用;只能在本文件中使用,無(wú)法跨文件。
網(wǎng)站設(shè)計(jì)制作過(guò)程拒絕使用模板建站;使用PHP+MYSQL原生開(kāi)發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了十多年的成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。
靜態(tài)函數(shù)是函數(shù)的一種,函數(shù)包括靜態(tài)函數(shù)和非靜態(tài)函數(shù)兩種。
其中靜態(tài)函數(shù)是有static修飾的函數(shù),如果沒(méi)有,則為非靜態(tài)函數(shù)(全局函數(shù))。
靜態(tài)函數(shù)(帶static的),只能在本文件中使用,無(wú)法跨文件。而非靜態(tài)函數(shù)(不帶static的),可以在任何一個(gè)文件中使用。當(dāng)在其它文件中使用時(shí),需要做函數(shù)聲明后再使用。
樓上只說(shuō)對(duì)一半,這里能調(diào)用a和b兩個(gè)函數(shù)確實(shí)是因?yàn)槭褂胕nclude把a(bǔ).cpp和b.cpp加入到了main.cpp里面,使用include實(shí)際是把對(duì)應(yīng)代碼加到include的位置。真正做項(xiàng)目沒(méi)有這樣做的,都是使用頭文件的方式;
static修飾的函數(shù)和變量在別的文件是絕對(duì)不可見(jiàn)的,這是樓上錯(cuò)誤的地方,即使使用extern聲明函數(shù)導(dǎo)出,也不可以,編譯時(shí)根本就不能通過(guò),會(huì)報(bào)static類型錯(cuò)誤,不能導(dǎo)出。。。
在你原來(lái)文件結(jié)構(gòu)上加入頭文件:
//a.h
#include iostream
using namespace std;
void a();
//b.h
void b();
然后把main.cpp里面的2個(gè)include分別改成a.h和b.h,編譯:g++ main.cpp a.cpp b.cpp會(huì)發(fā)現(xiàn)報(bào)錯(cuò)誤:
a.cpp: In function ‘void a()’:
a.cpp:3: error: ‘void a()’ was declared ‘extern’ and later ‘static’
a.h:3: error: previous declaration of ‘void a()’
這里就是因?yàn)閍函數(shù)是static類型,不能導(dǎo)出,把static去掉這里就可以編譯通過(guò)了。。。。
這也是static其中一個(gè)用法
static在c語(yǔ)言中是私有、靜態(tài)意思。
用于在函數(shù)中聲明“靜態(tài)變量”用,在每一次調(diào)用后,該變量并不在函數(shù)返回時(shí)立即釋放,變量中保存的值,可以保留到下一次調(diào)用時(shí)繼續(xù)有效。
私有就是隱藏。static函數(shù)只能聲明后的本文中調(diào)用。static全局變量只能聲明后的本文中調(diào)用。static局部變量只能聲明后的本函數(shù)調(diào)用
靜態(tài)就是一直存在,相對(duì)于每次調(diào)用動(dòng)態(tài)分配而言。static函數(shù)未驗(yàn)證是否每次調(diào)用代碼地址都是一致的。static全局變量生命周期到程序或進(jìn)程結(jié)束。static局部變量生命周期到程序或進(jìn)程結(jié)束。
static的使用和作用
靜態(tài)全局變量。全局變量前加static,修飾全局變量為靜態(tài)全局變量,改變?nèi)肿兞康目梢?jiàn)性。靜態(tài)局部變量。局部變量前加static,修飾局部變量為靜態(tài)局部變量,改變局部變量的銷毀時(shí)期。靜態(tài)函數(shù)。函數(shù)返回類型前加static,修飾函數(shù)為靜態(tài)函數(shù),改變函數(shù)的可見(jiàn)性。
類的靜態(tài)成員。類成員前加static,修飾類的成員為類的靜態(tài)成員,實(shí)現(xiàn)多個(gè)對(duì)象之間的數(shù)據(jù)共享,并且使用靜態(tài)成員不會(huì)破壞封裝性,也保證了安全性。類的靜態(tài)函數(shù),類函數(shù)前加static,修飾類的函數(shù)為靜態(tài)函數(shù),減少資源消耗,不需要實(shí)例化就可以使用。
當(dāng)前題目:c語(yǔ)言訪問(wèn)靜態(tài)函數(shù) c語(yǔ)言靜態(tài)變量怎么用
轉(zhuǎn)載來(lái)源:http://www.rwnh.cn/article26/ddosicg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站維護(hù)、微信小程序、建站公司、云服務(wù)器、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)