1.普通變數被const修飾,在c語言中,是可讀變數,不是真常量,應為可以通過指標來修改;但是在c++中,卻是真常量,通過指標不能修改被const修飾的普通變數。
const
int i = 2;
int* pi = (int*)&i;
*pi = 4; //c++中的const是真常量
cout
<< "i: "
<< i << ",*pi: "
<< *pi << endl;
const
int* j = (int*)(&i);
int* pj = const_cast
(j); //c++中的const是真常量
*pj = 6;
cout
<< "i: "
<< i << ",*j: "
<<*j <<",*pj: "
<< *pj << endl;
但是被volatile修飾的const那就不是真常量了,應為volatile會方式const常量進入符號表;
const
int x = 1; //x進入符號表,絕對常量
int& rx = const_cast
(x);
rx = 5;
printf("x = %d,rx = %d\n",x,rx);
volatile
const
int y = 2; //volatile 的作用立馬凸顯:防止y進入符號表,使絕對常量變成唯讀常量
int& ry = const_cast
(y);
ry = 6;
printf("y = %d,ry = %d\n",y,ry);
2.在c++中,如果const 與引用一起修飾普通變數,那麼結果就大不一樣了。
有兩種特點:
1>const引用可以被常量初始化;
2>const引用可以通過指標來修改,即const引用讓普通變數擁有唯讀屬性。
const
int& j = 1;
int& k = const_cast
(j);
const
int x = 2;
int& y = const_cast
(x);
k = 3;
cout
<< "j: "
<< j << ",k: "
<< k << endl;
y = 4;
cout
<< "x: "
<< x << ",y:"
<< y << endl;
const int& i = 2; //c++中使用const引用就能使得常量ci變成唯讀變數
int* pi = (int
*)&i;
*pi = 14;
cout << "i: "
<< i << ",*pi: "
<< *pi
<< endl;
3.當函式返回值為引用時
1>若返回棧變數
(1)不能成為其它引用的初始值;
(2)不能作為左值使用;
int& test_041()
void test_04()
2>若返回靜態變數或全域性變數
(1)可以成為其它引用的初始值;
(2)既可以做右值使用,也可以做左值使用。
int& test_031()
void test_03()
C指標大雜燴
include int func int a,int b int main void int p int 可以看成int a int 這是乙個指標指向引數是int,返回值是int的函式。函式指標。int p int 這是乙個函式,他的引數是乙個整形,返回值是乙個指向整形的指標。include int...
分頁大雜燴
文章中提到了linq,所以先介紹一下它,好讓我們有個初步認識 linq是語言級整合查詢 language integrated query linq是一種用來進行資料訪問的程式設計模型,使得.net語言可以直接支援資料查詢 linq發布於.net framework 3.5 linq體現了物件導向程...
C語言指標大雜燴
by francis hao oct 31,2016 指標陣列本身是個陣列,陣列的內容是指標。形如char pa。由於優先順序高於 pa先於結合表示pa是乙個陣列,pa再與 結合表示pa是指標。比如pa 0 放了乙個指標。陣列指標本身是個指標,指標指向的是陣列。形如char ap 6 ap與 結合表...