- 相關(guān)推薦
C語言作用域入門學(xué)習(xí)
程序中名字的作用域,通俗的講,就是這個(gè)名字在程序中的使用范圍。在C語言中,作用域的規(guī)則相對(duì)比較簡單,主要分為全局作用域和局部作用域兩種。下面小編整理了C語言作用域入門學(xué)習(xí)知識(shí),希望對(duì)大家有幫助!
一個(gè)變量如果定義在函數(shù)中,那么這個(gè)變量的作用域就是一個(gè)局部作用域,在函數(shù)外面不能訪問這個(gè)變量。在別的函數(shù)中定義同名的變量,也不會(huì)出現(xiàn)名字沖突,因?yàn)樗鼈兌继幱诟髯缘木植孔饔糜蛑小?/p>
外部變量或函數(shù)的作用域是從聲明的位置開始,到所在文件的末尾。如果需要在別的文件中引用不在這個(gè)文件中定義的外部變量,或者在這個(gè)變量定義之前使用,可以通過關(guān)鍵字 extern 進(jìn)行聲明。
extern 修飾符的作用是,告知該變量已經(jīng)在別的地方定義了。外部變量和函數(shù)默認(rèn)具有全局作用域,所以可以在程序的任何位置進(jìn)行引用。
main() { ... }int sp = 0;double val[MAXVAL];void push(double f) { ... }double pop(void) { ... }
在上面的代碼中,sp和val的作用域是從它們定義的位置開始的,所以可以在push和pop函數(shù)中引用這兩個(gè)變量。而在main函數(shù)中,不能直接引用這兩個(gè)變量。如果需要引用在后面定義的變量,可以使用關(guān)鍵字 extern 聲明需要使用的變量。在上面的代碼中,如果需要在main中使用sp,則可以這樣聲明:
extern int sp;
聲明和定義的區(qū)別:聲明只是告知這個(gè)變量的類型,而定義一個(gè)變量,除了告知變量的類型,還會(huì)為變量分配存儲(chǔ)空間。
在一個(gè)程序中,外部變量的定義只能有一處,而外部變量的聲明可以出現(xiàn)在任何需要引用這個(gè)變量的文件中。通過在文件中使用 extern 關(guān)鍵字聲明一個(gè)變量,可以使用在別的地方聲明的變量。
static修飾符
在C語言中,static修飾符用于定義靜態(tài)變量。static除了可以修飾變量外,還可以修飾函數(shù)。
對(duì)于外部變量和函數(shù),static修飾符會(huì)限制它們的作用域,使它們只能在定義它們的文件中使用,作用域不能傳播到文件外。
使用static修飾符,提供了一種隱藏名字的方式,可以將名字限定在一個(gè)文件中,防止名字沖突。
static char buf[BUFSIZE];static int bufp = 0;int getch(void) { ... }void ungetch(int c) { ... }
在上面的代碼中,bufp和buf都只能在函數(shù)getch和ungetch中使用,而不能在別的文件中使用,即使在別的文件中使用了extern聲明。
static修飾符除了可以修飾外部變量和函數(shù)外,也可以作用于局部變量。通過static修飾的局部變量,在函數(shù)中的存儲(chǔ)空間將不會(huì)再函數(shù)結(jié)束后銷毀,而是一直存在直到程序結(jié)束。當(dāng)程序再次被調(diào)用時(shí),仍舊可以訪問這個(gè)區(qū)域的內(nèi)存。
【C語言作用域入門學(xué)習(xí)】相關(guān)文章:
C語言常量入門學(xué)習(xí)06-05
C語言入門知識(shí)07-20
c語言入門經(jīng)典程序08-01
C語言入門什么是編程語言10-12
C語言用戶標(biāo)識(shí)符的作用域和存儲(chǔ)類08-16
C語言自學(xué)入門技巧09-17
C語言入門知識(shí):常量08-31
入門首選C語言的原因07-25
c語言入門基礎(chǔ)知識(shí)07-18