c/c++中的const

來源:互聯網
上載者:User

標籤:c++   c語言   

const基礎知識(用法、含義、好處)

    const int a;    int const b;    const int *c;    int * const d;    const int * const e ;

含義:

第一個第二個意思一樣 代表一個常整形數;

第三個 c是一個指向常整形數的指標(所指向的記憶體資料不能被修改,但是本身可以修改);

第四個 d 常指標(指標變數不能被修改,但是它所指向記憶體空間可以被修改);

第五個 e一個指向常整形的常指標(指標和它所指向的記憶體空間,均不能被修改)。

const的好處

合理的利用const,

1指標做函數參數,可以有效提高代碼可讀性,減少bug;

2清楚的分清參數的輸入和輸出特性。

int setTeacher_err( const Teacher *p)//const修改形參的時候,利用形參不能修改指標所指向的記憶體空間

結論:

C語言中的const變數

C語言中const變數是唯讀變數,有自己的儲存空間

C++中的const常量

可能分配儲存空間,也可能不分配儲存空間 

1 當const常量為全域,並且需要在其它檔案中使用

2 當使用&操作符取const常量的地址

以下代碼用在c中報錯,c++中正確運行:

int main(){    const int a = 1;    const int b = 2;    int array[a + b] = {0};    int i = 0;     for(i=0; i<(a+b); i++)    {        printf("array[%d] = %d\n", i, array[i]);    }    printf("Press enter to continue ...");    getchar();    return 0;}
結論:C++中的const修飾的,是一個真正的常量,而不是C中變數(唯讀)。
const和#define的區別

C++中的const常量類似於宏定義

const int c = 5; ≈ #define c 5

C++中的const常量在與宏定義不同

const常量是由編譯器處理的,提供類型檢查和範圍檢查,宏定義由前置處理器處理,單純的文本替換。



c/c++中的const

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.