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 功能類似指標 既然如此,為何非得多此一舉?...