Const指標與Const常量的在C編譯器之間的匹配
阿新 • • 發佈:2019-01-28
這幾天讀了JULY的部落格,感覺CSDN是一個開發的平臺,有什麼技術上的知識,有可以共享!
我也來寫一下,在使用C/C++中遇到的一些小的,易忽略的問題。
1.非const型別的變數轉化為const型別的變數(自動轉化的)
//以下編譯環境是linux+gcc #include<iostream> #include<stdlib.h> using namespace std; int main(void) { double value = 0.0f; const double *ptr=NULL; ptr=&value;//這步很容易出錯,其實這個語句是正確的 cout<<*ptr<<endl; system("pause"); return 1; }
2.const型別的變數轉化成非const變數(不是自動的,要交強制型別轉化)
像這種型別的轉化,除了const_cast,還有static_cast(這個一般是編譯器預設的隱式的呼叫),reinterpret_cast(這個引用的比較多,適用於大部分的型別轉化如:int <=> char等)#include<iostream> #include<stdlib.h> using namespace std; int main(void) { const double value = 0.0f; double *ptr=NULL; ptr=&value;//這步賦值語句是錯誤的,編譯器會報錯的--這種要加強制類轉化符const_cast //最後應該改為ptr=const_cast<double *>value; cout<<*ptr<<endl; system("pause"); return 1; }