歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C/C++中的const

C/C++中的const

日期:2017/3/1 9:29:35   编辑:Linux編程

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常量是由編譯器處理的,提供類型檢查和作用域檢查,宏定義由預處理器處理,單純的文本替換。

Copyright © Linux教程網 All Rights Reserved