C 中const大雜燴

2021-07-14 11:06:46 字數 1868 閱讀 3500

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與 結合表...