對const和引用的新理解

2021-08-03 14:39:19 字數 1494 閱讀 8274

在c語言中,const實際是乙個冒牌貨,例如,const int a=10;a是乙個唯讀的常量,通過指標可以繞過去

在c+中,通過const 修飾的東西,會變成什麼樣子?

1.const int a=10;放入符號表裡,始終從符號表裡拿資料,a變成真正意義上的常量10

keyvaluea10

c++裡面的符號表

1.通過**來理解

const int a;

int const b;

const int *c;

int * const d;

const int * const e ;

含義:

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

//第三個

c是乙個指向常整形數的指標

(所指向的記憶體資料不能被修改,但是本身可以修改

)//第四個

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

//第五個

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

結論:c語言中的

const

變數:c語言中

const

變數是唯讀變數,有自己的儲存空間

c++中的

const

常量:可能分配儲存空間,也可能不分配儲存空間  

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

當使用&操作符取

const

常量的位址

符號表、編譯過程中若發現對const使用了

extern或者&

操作符,則給對應的常量分配儲存空間(相容c)

例子**:

int main()

c++中的

const

常量類似於巨集定義

const int c = 5; ≈

#define c 5

c++中的

const

常量在與巨集定義不同

const常量是由編譯器處理的,提供型別檢查和作用域檢查

巨集定義由預處理器處理,單純的文字替換

1、 引用是c++的概念,屬於

c++編譯器對

c的擴充套件

int main()

int a = 0;

int &b = a; //int * const b = &a

b = 11;  //*b = 11;

return 0;

2. 普通引用有自己的空間嗎?//有

struct teacer {

int &a;

int &b;

int main()

printf("sizeof(teacher) %d\n", sizeof(teacer));

system("pause");

return 0;

3.當實參傳給形參引用的時候,只不過是

c++編譯器幫我們程式設計師手工取了乙個實參位址,傳給了形參引用(常量指標)

引用 const引用和非const引用

引用構造了物件的乙個同義詞,是c 物件的另乙個名字。在實際程式中,引用的主要作用是作函式的形參。引用是一種復合型別1,它通過在變數名前新增 來定義。在使用引用的情況下,每一種引用型別都關聯到某一其他型別。c 不能定義引用型別的引用,但是可以定義任何其他型別的引用。int a 100 int refa...

指標和引用,const 指標和const 引用

指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...

const引用和普通引用

一 引用所繫結的型別和所引用的物件型別需嚴格匹配。除了兩個例外 1 普通引用必須繫結到物件,不能繫結到常量 int a 3 錯誤 2 const引用 1 初始化const引用允許用任意表示式,只要該表示式的結果能轉化為引用型別即可 2 允許乙個const引用繫結非常量物件,字面值,甚至是一般表示式 ...