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 巨集能不能都做到...