20110907C語言深度剖析筆記

2021-05-28 01:44:11 字數 1070 閱讀 4659

2011/9/7

1,c有32個關鍵字,sizeof是關鍵字而不是函式

2,定義和宣告最重要的區別是:

定義建立物件並為這個物件分配記憶體,只可定義一次;

宣告沒有分配記憶體,可以多次宣告。

inti;為定義。

externint i;為宣告。

3,auto:編譯器在預設的預設情況下,所有都是auto的。

register:請求編譯器盡可能的將變數存在cpu內部暫存器中而不是通過記憶體訪問以提高效率。方式是:資料從記憶體裡拿出來放到暫存器,然後cpu再從暫存器裡讀取資料來處理,處理完同樣把資料通過暫存器放到記憶體裡,cpu不直接和記憶體打交道。

register變數必須是乙個單一的值,其長度應小於或等於整型的長度。可能不存放在記憶體中,所以不能用取址運算子&來獲取register變數的位址。

4,static在c語言中的兩大作用:

第乙個:修飾變數(儲存方式:在記憶體的靜態區)。

靜態全域性變數:作用域僅限於變數被定義的檔案中,其他檔案使用extern也無法使用。

靜態區域性變數:作用域為函式中,同乙個文件中的其他函式也用不了。(注意:即使函式執行結束,這個靜態變數還是不會被銷毀的,這個函式下次使用時仍然能用到這個值的)

第二個:修飾函式。

函式前加static不是儲存方式,而是指本函式的作用域侷限於本檔案,也即內部函式。可以防止同名的情況。

5,int i=0;

sizeof(int)為4,sizeof(i)為4,sizeof i也為4,sizeof int在vc6.0中會出錯,在vs2008中可以。

sizeof在計算變數所佔空間大小時,括號可以省略,而在計算型別大小時不能省略,因為sizeof和int都是關鍵字。

char*p=null;

sizeof(p)為4,指標的sizeof都為4;

sizeof(*p)為1,即char的記憶體大小。

inta[100];

sizeof(a)為400,即100乘以4個位元組。

sizeof(a[0])…sizeof(a[99])都為4,sizeof(a[100])也為4

sizeof(&a)為4,即位址的sizeof肯定為4

C語言深度剖析

c語言深度剖析 1,編譯器通常不為普通const唯讀變數分配儲存空間,而是將他們儲存在符號表中,使得它成為乙個編譯期間的值,沒有了儲存與讀記憶體的操作,使得它的效率更高。2,const int p p可變,p指向的物件不變。int const p p可變,p指向的物件不可變 int const p ...

C語言深度剖析

什麼是資料型別?資料型別是建立變數的模具 資料型別是建立變數的模具 型別的本質 資料型別可理解為固定記憶體大小的別名 資料型別的本質是固定記憶體大小的別名 變數本質 變數是一段實際連續儲存空間的別名 型別和變數的關係 vim program.c include int main gcc progra...

C語言深度剖析 列舉

列舉與 define巨集的區別 1 define 巨集常量是在預編譯階段進行簡單替換。列舉常量則是在編譯的時候確定其值。2 一般在編譯器裡,可以除錯列舉常量,但是不能除錯巨集常量。3 列舉可以一次定義大量相關的常量,而 define 巨集一次只能定義乙個。列舉能做到事,define 巨集能不能都做到...