C 筆記 1(C 型別轉換)

2021-07-16 03:56:53 字數 1059 閱讀 1456

c的轉換屬於太多與靈活,如果c++的類與物件也這樣使用,將會很不安全。

char* pstring = "hello!"

int* p =(int *)pstring;

static_cast用於相關型別的指標之間的轉換,還可以顯式執行標準資料型別的型別轉換。其重要的作用是在編譯階段檢查型別轉換是否安全。

base *pbase = new base();

derived *pderived = new derived();

pbase = pderived; //ok,直接向上轉換沒有問題

pderived = pbase; //error,這就得強制轉換了,用下面的方法

pderived = static_cast(pbase); //ok,安全的強制轉換

unrelated *p = static_cast(pbase); //error,轉換到不相關的型別這就報錯了

下面 是vs報錯資訊

dynamic_cast動態型別轉換。在執行階段執行型別轉換。這就與動態型別識別有關了。在c++11中常見,具體

注意一定要檢查dynamic_cast的返回值的有效性,dynamic_cast的轉換很容易失敗,返回null轉換失敗。

這就是乙個強制轉換,類似於c語言習慣。回到那個程式

unrelated *p = static_cast(pbase);	//error,轉換到不相關的型別這就報錯了
但是這樣就可以了

unrelated *p = reinterpret_cast(pbase);	//ok,轉換到不相關的型別不報錯
官方建議我們不要一直用,因為不安全。

這個更是逆天的強制轉換,官方建議不到萬不得已,千萬不要用。這是個關閉const訪問修飾符的強制轉換。直接破壞const的常量性。

C 基礎學習1 C 布林型別

布林型別 bool 是c 新增的一種基本資料型別。在標準的c語言中並未定義bool型別,如果需要使用bool型別,程式設計師可以通過巨集定義來自定義乙個bool型別,定義語句如下 define bool int define false 0 define true 1也就是將int型定義為bool型...

溫故而知新 1 C 型別轉換

型別轉換 所謂型別轉換,就是把值從乙個型別轉換為另乙個型別,比如int string,datetime string。以下是 c 入門經典 中對型別轉換的定義。切忌不可按照自己的慣性思維誤導,本人在複習前一直都認為顯式是所有情況都可轉換,隱式是特定情況才可轉換,因為只顧使用而很少仔細學習閱讀基本知識...

筆記1 C語言概述

1.c語言起源 c語言是由unix的研製者丹尼斯 里奇和肯 湯普遜於1970年研製出的b語言的基礎上發展完善起來的。19世紀70年代初期,貝爾實驗室的丹尼斯 里奇第一次將b語言改為c語言。2.c語言特點 c語言是一種面向過程的語言,同時具有高階語言和組合語言的優點。由於具有良好的移植性,稍加修改或不...