1. 程式人生 > >Const指標與Const常量的在C編譯器之間的匹配

Const指標與Const常量的在C編譯器之間的匹配

這幾天讀了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變數(不是自動的,要交強制型別轉化)

#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;    
}
像這種型別的轉化,除了const_cast,還有static_cast(這個一般是編譯器預設的隱式的呼叫),reinterpret_cast(這個引用的比較多,適用於大部分的型別轉化如:int <=> char等)