一、sizeof
c語言中判斷資料型別或者表示式長度符。
用法有:sizeof(type_name) sizeof(object) sizeof object
int i;
sizeof(int) == sizeof(i) == sizeof i;
sizeof與strlen
strlen計算不包含』\0』(null)的字串長度。
sizeof計算包含』\0』(null)的快取區長度。
strlen呼叫函式,程式執行時計算字串長度。
sizeof:
1、快取區由已知字串初始化。
2、所以,快取區長度固定。
3、編譯時,計算快取區長度。
二、const
唯讀資料型別。
1、修飾乙個變數為常量,告訴使用者該變數的用途,以及不可隨意修改。
2、給編譯器有用資訊,使**更加優化緊湊。
3、合理使用可使編譯器保護不應被修改的變數。
const修飾指標:
const int *p;修飾*p,*p不可變,p可變;
int const *p;const修飾的是*p,*p不可變,p可變;
int * const p;const修飾的是p,p不可變,*p可變;
const int * const p;
三、volatile
易變的
1、易變的。並不是直接指示該變數可以任意改變。而是告訴編譯器,該變數(繫結記憶體中的值)時可能隨時改變的,要注意隨時更新,更新的辦法是直接從記憶體讀取該值。
2、執行緒中變數的同步:在本次執行緒內,當讀取乙個變數時,為提高訪問速度,編譯器優化時有時會先把變數讀取到乙個暫存器中;以後,再取變數值時,就直接從暫存器中取值。
如果變數為未宣告為volatile的變數,對於執行緒中共享的變數,將導致第乙個執行緒改變了該變數的值,並儲存在記憶體位址中(即該段記憶體的值被改變,程式卻繼續從暫存器中讀取改變之前的值),其他的執行緒使用的仍然是改變之前的變數值。
volatile的使用:共享記憶體時,該記憶體單元可能隨時修改,如狀態暫存器,中斷訪問的非自動變數(全域性變數)多執行緒條件變數;
c中inline關鍵字簡析
在c中,為了解決一些頻繁呼叫的小函式大量消耗棧空間或是叫棧記憶體的問題,特別的引入了inline修飾符,表示為內聯函式。棧空間就是指放置程式的區域性資料也就是函式內資料的記憶體空間,在系統下,棧空間是有限的,假如頻繁大量的使用就會造成因棧空間不足所造成的程式出錯的問題,函式的死迴圈遞迴呼叫的最終結果...
C語言部分關鍵字
1.static 修飾區域性變數 只在初次執行時,進行初始化工作 全域性變數 只是本.c檔案可見 函式 類似於全域性變數 2.extern 編譯器並不匹配extern的函式的引數列表,只做函式名匹配!3.typedef 重定義過的資料型別,對於typedef char newc newc a,b 這...
C語言部分關鍵字
void char int float double short long signed unsigned struct union enum typedef sizeof auto static register extern const volatile return continue brea...