- 相關(guān)推薦
C語言編譯預(yù)處理和動態(tài)存儲分配考點(diǎn)解析
下面是百分網(wǎng)小編收集整理的C語言編譯預(yù)處理和動態(tài)存儲分配考點(diǎn)解析,歡迎學(xué)習(xí)!
C語言編譯預(yù)處理和動態(tài)存儲分配考點(diǎn)解析
13.1宏定義(不帶參數(shù)的宏定義,帶參數(shù)的宏定義)
1.編譯預(yù)處理就是對C源程序進(jìn)行編譯前,由″編譯預(yù)處理程序″對預(yù)處理命令行進(jìn)行處理的過程。
2.C語言中,凡是以″#″開頭的行,都稱為″編譯預(yù)處理″命令行。C語言中的編譯預(yù)處命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。這些預(yù)處理命令組成的預(yù)處理命令行必須在一行的開頭以″#″號開始,每行的未尾不得加″;″號,以區(qū)別于C語句、定義和說明語句。
3.不帶參數(shù)的宏定義:命令的一般形式為:
#define標(biāo)識符字符串
定義中的″標(biāo)識符″為用戶定義的標(biāo)識符,稱為宏名。在預(yù)編譯時(shí),C預(yù)編譯程序?qū)⒊霈F(xiàn)的宏名替換成″字符串″的內(nèi)容,這一過程也稱為宏展開。
4.帶參數(shù)的宏定義:命令的一般形式為
#define宏名(形式參數(shù))字符串
定義中的″字符串″應(yīng)包含括號中所指定的形式參數(shù)。注意宏名與括號之間不要加空格,否則就成為不帶參數(shù)的宏定義了。
5.預(yù)編譯時(shí),遇到帶實(shí)參的宏名,則按命令行中指定的字符串從左到右進(jìn)行置換,原則是:遇到實(shí)參則以實(shí)參代替,非形參字符原樣保留,從而成展開后的內(nèi)容。
13.2“文件包含”處理
1.文件包含的一般形式為:
#include″頭文件名″
#include<頭文件名>
頭文件名一般由C語言提供,也可以是用戶自己編寫的,頭文件通常用.h作為后綴。
2.當(dāng)頭文件名用雙引號括起來時(shí),系統(tǒng)首先在使用此命令的文件所在的目錄中查找被包含的文件,找不到時(shí),再按系統(tǒng)指定的標(biāo)準(zhǔn)方式檢索其它目錄;當(dāng)頭文件名用尖括號括起來時(shí),則直接按系統(tǒng)指定的標(biāo)準(zhǔn)檢索方式查找被包含的文件。
3.預(yù)編譯時(shí),將被包含文件的內(nèi)容全部復(fù)制到包含文件中,這就是文件″包含處理″。
相關(guān)閱讀:C語言用戶標(biāo)識符的作用域和存儲類考點(diǎn)解析
12.1 局部變量和全局變量
在函數(shù)內(nèi)部或復(fù)合語句內(nèi)部定義的變量稱為局部變量。函數(shù)的形參屬于局部變量。在函數(shù)外部定義的變量稱為全局變量。有時(shí),局部變量也稱為內(nèi)部變量,全局變量也稱為外部變量。
12.2 變量的存儲屬性(自動、靜態(tài)、寄存器、外部),變量的作用域和生存期
C語言中來說明變量存儲屬性的關(guān)鍵字有四個(gè):auto(自動)、static(靜態(tài))、register(寄存器)、extern(外部)。
1.局部變量的存儲屬性
局部變量可以是自動類別(用auto,register說明),也可以是靜態(tài)類別(用static說明)。形參只能是自動存儲類別,不允許是static類別。
當(dāng)局部變量未指明類別時(shí),被自動說明成自動(auto)變量。這類局部變量稱為自動變量。其值存放在內(nèi)存的動態(tài)存儲區(qū),因此在退出作用域后,變量被自動釋放,其值不予保留。
當(dāng)局部變量說明成寄存器(register)類型時(shí),與自動(auto)變量一樣屬于自動類別,所不同的是此時(shí)變量的值保留在CPU中的寄存器中。
當(dāng)變量說明成static(靜態(tài))類型時(shí),稱這樣的變量為靜態(tài)局部變量。在程序運(yùn)行期間,它占據(jù)一個(gè)永久的存儲單元,在函數(shù)退出后,變量的值仍舊保留。
2.全局變量的存儲屬性
全局變量都屬于靜態(tài)存儲類別,可以用extern和static對它們進(jìn)行說明。
當(dāng)一個(gè)文件中要引用另一文件中的全局變量或在全局變量定義前要引用它時(shí),可用extern說明。相當(dāng)于擴(kuò)大全局變量的作用域。
用static(靜態(tài))說明的全局變量稱為靜態(tài)全局變量,它僅能由本文件引用,即使在其文件中用extern說明也不能使用,它相當(dāng)于限制了全局變量作用域的擴(kuò)展。
12.3 內(nèi)部函數(shù)和外部函數(shù)
1.在C語言中,所有的函數(shù)在本質(zhì)上都是外部函數(shù)。
2.函數(shù)定義時(shí)用extern進(jìn)行說明稱為外部函數(shù)。函數(shù)的隱含類別為外部函數(shù),外部函數(shù)可以被其他文件調(diào)用。
3.定義函數(shù)時(shí)用static進(jìn)行說明稱為靜態(tài)函數(shù),也稱內(nèi)部函數(shù)。靜態(tài)函數(shù)也是外部函數(shù),只是它僅局限于它所在的文件,其他文件不能調(diào)用。
【C語言編譯預(yù)處理和動態(tài)存儲分配考點(diǎn)解析】相關(guān)文章:
計(jì)算機(jī)二級C語言編譯預(yù)處理和動態(tài)存儲分配知識考點(diǎn)歸納09-24
c語言編譯預(yù)處理10-15
C語言的預(yù)處理08-02
C語言條件編譯07-22
C語言的編碼編譯08-11
C語言編譯器和IDE選擇09-22
C語言編譯器和IDE的選擇06-30
有趣的C語言預(yù)處理07-29