c 中const和引用

2021-08-18 18:49:47 字數 883 閱讀 7706

c++和c語言裡面的const

1:在c語言裡面的const修飾的量是乙個常變數,不能作為左值,但是可以通過洩露指標和引用去修改它,int a=10; int &p=a; 洩露了常量的引用。

但是 :int a=10;const int *p=&a;是正確的。因為a本來就是普通的變數,而通過常量*p不能改變它,但a可以自己改變自己,只是把對外的許可權變小了,沒影響什麼。

3:const和二級指標的結合

const **-》int **和 int **-》const**都是錯誤的;

例如:const int b=10,const int  *p=&b; int **q=&p;

在上面的例子中,const修飾的是**p,而*q<->p,**q<->*p,這兩個式子是成立的,因為const修飾的是**p,所以**q<->*p就不考慮了。考慮*q<->p,如果等式成立的話,那麼**q就是*p。那麼就把常量的值b改了。

考慮int**-》const**的情況。

int a=10; int *p1=&a;const int **p2=&p1;

按上面的分析,**p2<->

*p1,*p2<->

p1.只分析*p2<->

p1的情況。

當*p2的型別是const int*,假如我們給*p2賦值為const int *h,那麼*p1就把h的值給改了,編譯器肯定不允許。

如果在二級指標中,const在中間的話我們可以轉換成一級指標的形式。         

4:在c++裡面的引用的注意。

1:引用必須初始化。

3:引用一旦經過初始化,就不能在為其初始化了。

4:引用的彙編指令和指標的彙編指令是一模一樣的的。

引用要成功的話,必須滿足以下兩點:

2:引用必須初始化。

C 中const引用和非const引用的使用注意

今天學習時突然有疑惑,c 有了指標為何還要設計引用呢?後來看到一篇部落格豁然開朗 為什麼 c 有指標了還要引用?總結一下 更加簡潔好看了 由於引用必須被初始化,並且之後也無法重新繫結其他物件,這樣就更安全了 為了操作符過載,比如部落格中那個過載 的例子 並且,在了解了這些之後,對引用的一些其他特性也...

引用 const引用和非const引用

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

C 中引用 指標 const

引用變數名不存在實體,即在記憶體中存沒有為此變數開闢記憶體空間。如int a0,程式會在記憶體中建立2或4位元組的空間儲存a0變數,但int a1 a0,並不會在記憶體中開闢乙個2或4位元組的空間來儲存a1,而是將a1和a0關聯起來,通過操作a1可操作a0 功能類似指標 既然如此,為何非得多此一舉?...