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