日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

static和extern的用法总结

發(fā)布時(shí)間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 static和extern的用法总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
static用法見: 1、http://www.cnblogs.com/yezhenhan/archive/2011/10/31/2229724.html 2、http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_5297.html
extern用法: 1、http://blog.csdn.net/cameracanon/article/details/4061419 2、http://blog.csdn.net/liu1028701143/article/details/7359381
簡單地理解static: (1)如果static放在頭文件中的話,被2個(gè)不同的cpp文件分別引入時(shí),那么這兩個(gè)cpp都有一個(gè)自己的這個(gè)static變量,并且相互不受影響。 (2)static用來修飾全局變量時(shí),只能被本文件引用,不會(huì)被其他文件訪問和修改,其他文件可以定義相同名字的變量; (3)static用來修飾函數(shù)時(shí),只能被本文件引用,不會(huì)被其他文件訪問和修改,其他文件可以定義相同名字的函數(shù); (4)static用來修飾局部變量(即某個(gè)函數(shù)內(nèi)部的變量)時(shí),退出函數(shù)時(shí),該變量仍保留著相應(yīng)的值; 例如: void count(); int main() { ? ?int i; ? ?for (i = 1; i <= 3; i++) ? ? ?count(); ? ?return 0; } void count() { ? ?static?num = 0; ? ? ?num++; ? ? ?printf(" I have been called %d",num,"timesn"); }
輸出結(jié)果為: I have been called 1 times. I have been called 2 times. I have been called 3 times.

簡單地理解extern: (1)extern可以置于變量或者函數(shù)前,以標(biāo)示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。 (2)extern用在變量聲明中常常有這樣一個(gè)作用,你在*.c文件中定義聲明了一個(gè)全局的變量,這個(gè)全局的變量如果要被其他x.c文件引用,就放在*.h中并用extern來引用聲明,然后再x.c中包含該*.h頭文件。

(3)(個(gè)人規(guī)則)函數(shù)的定義聲明帶不帶extern其實(shí)都表示同一個(gè)意思,即不帶時(shí)默認(rèn)是extern的,所以一般定義聲明時(shí)不帶extern。

(4)(個(gè)人規(guī)則)函數(shù)的引用聲明必須帶關(guān)鍵字extern,暗示這個(gè)函數(shù)可能在別的源文件里定義,沒有其它作用。

(5)如果定義函數(shù)(函數(shù)的具體實(shí)現(xiàn))的c/cpp文件在對應(yīng)的頭文件中聲明了所定義的函數(shù)(頭文件中該函數(shù)前可帶可不帶extern),那么在其他c/cpp文件中要使用這些函數(shù),只需要包含這個(gè)頭文件即可。如果你不想包含頭文件,那么你要在其他c/cpp中使用extern聲明該函數(shù)(僅僅表明這個(gè)函數(shù)可能在別的源文件里定義,沒有其它作用)。如下所述:

first.h頭文件內(nèi)部:

#ifndef Function

#define Function

void count();

……

#endif

?

first.c文件內(nèi)部:

#include "first.h"//count()函數(shù)的聲明

……

void count()

{

……

}

?

//如果不想包括頭文件,second.c文件內(nèi)部:

extern void count();//表明是其他文件里面的函數(shù)

?

//包含頭文件,second.c文件內(nèi)部

#include "fisrt.h"//這個(gè)就包含了 void count()函數(shù)的聲明


總結(jié)

以上是生活随笔為你收集整理的static和extern的用法总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。