一、static_casr(expr)
(1)類似於c語言的強制轉化,保證**的安全性和正確性。
(2)可用於①相關型別轉換;例如整型、實型;②子類轉父類;③ void *指標與其他型別指標之間的型別轉換。
(3)不允許指標之間型別的轉換(特例:僅允許void*與其他指標之間的型別轉換)。
如:char ch = 『a』;注:①指標之間的賦值規則:必須是相同指標型別之間賦值(相同步長)。char *pc = &ch;
int *pt = static_cast(pc); //
指標類char *->int *
//上方**是該類錯誤示例
② void*是萬能指標,可以接受任何指標的型別。
2、使用示例:
(1)非指標型別間轉換
double b =1.234;(2)void *指標與其他型別指標之間的轉換int a = static_cast(b); //double->int ;
char ch = static_cast(a); // int->char;
int *pa = &a;二、const_ casr(expr)void *p = pa;
int *pa 2= static_cast(p) ; //指標類void *->int *
1、作用:只能用於去除指標和引用的const屬性。
注:使用該運算子轉換意味著**設計上存在缺陷。
2、使用示例:
(1)去除指標
int a = 1;(2)去除引用const int *pa4 = &a; //pa4指標
int *pa5 = const_cast(pa4);
//去除const int *pa4的const屬性成為int *pa4賦左
int a = 1;三、dynamic_cast(expr)const int &la = a; //la引用
int &la2 = const_cast(la);
//去除const int &la的const屬性成為int &la賦左
1、作用:執行時型別識別和檢查,用於父類子類之間的轉換。
四、reinterpret_ casr(expr)
1、作用:任意無關型別之間的轉換。
②其他型別是允許const賦值給非const型別的。
2、特點:不安全,既不在編譯器期也不在執行期進行檢查,安全性完全由程式設計師決定。
3、使用示例:
char *pc = &ch;4、錯誤示例:int *pa3 = reinterpret_ casr(pc); //指標類char *->int *
int a = 1;float c = reinterpret_cast(a); //int->float
嵌入式程式設計
1 interrupt double compute area double radis 1 isr不能返回乙個值。2 isr不能傳遞引數。3 在許多處理器中浮點是不可重入的。4 printf 經常有重入和效能上的問題,所以一般不使用printf 2.volatile 1 volatile的語法和c...
嵌入式程式設計
對於簡單的應用程式,輪詢 許多時候也被稱作超級迴圈 實現起來比較簡單,而且非常適合簡單任務 見圖4.4 不過,當應用程式變得複雜或者對處理能力的要求更高時,輪詢就不合適了。例如,當乙個程序占用時間過長,其他模組在這段時間內就不會收到處理器的任何服務。即便不需要任何處理,處理器也得一直執行輪詢程式,這...
嵌入式物件導向程式開發(1)
d2.26 嵌入式物件導向程式設計 嵌入式linuxc 開發 學習內容 c c with class 95 c中學過的資料型別 基本控制語句 函式 關鍵字 位運算 指標 陣列 1 c到c 公升級 語法公升級 2 c 物件導向的三大特點 封裝 繼承 多型 3 c 模板 4 c 異常處理 5 c 檔案處...