一唯袄、C++中的const弯屈、define

C 語言中

在C語言中,const是個假語法恋拷,const 中的變量可以通過指針修改季俩,例如:

int const 和 const int 等價
const int a = 10;
int *p = (int*)&a;
*p = 20;
printf("%d\n",a);//輸出20

C++中

const 修飾的常量必須被初始化

int const 和 const int 等價
const int a = 10;//C++的const確實對a起了保護作用,不能通過指針的間接修改
int *p = (int*)&a;
*p = 20;
printf("%d\n",a);//輸出10

void test(){
   const int a;
   const int b;
   int array[a+b]={0}梅掠;//C++中的const就是一個常量,永遠不會被改變
}

const* 和*const的區(qū)別

經(jīng)车旯椋混淆c++中的const修飾指針的作用阎抒,今天看到一個blog說的很好“以*為界,左物右指”

當使用帶有指針的const時消痛,有兩種選擇:

  • const修飾指針正指向的對象
  • const修飾存儲在指針本身的地址且叁。

1 指向const的指針
使用指針定義的技巧,正如任何復雜的定義一樣秩伞,是在標識符的開始處讀它并從里到外讀逞带。如果我們要使正指向的元素不發(fā)生改變,得寫:

const int * x;
從標識符開始:“x 是一個指針纱新,指向一個const int展氓。”
把const從一邊移到另一邊脸爱,結果一樣遇汞。
int const * x;

2 const指針
是指針本身成為一個const指針,必須把const標明的部分放在*的右邊簿废,如:

int d = 1;
int * const x = &d;
指針本身是const指針空入,編譯器要求給它一個初始化值,這個值在指針壽命期間不變族檬。然而要改變它所指向的值是可以的歪赢,可以寫*x = 2。

這些可以總結成這樣一句話:
以*為分界點,
當const在*的左邊時,實際物體值不變
當const在*的右邊時,指針不變,
即,(鎖)左物右指
這樣來記比較方便5チ稀埋凯!

int main(int argc,char **argv)
{
    int b = 10;
    int * const a = &b;//右指針
    *a = 30;
    printf("%d---%d\n", *a,b);//30---30

    int c = 20;
    int const *d;//左物
    d = &b;
    d = &c;
    
    printf("%d\n", *d);//20
    system("pause");
   return 0;
}

define和const的區(qū)別

  • define和const變量在編譯的階段不一樣,define是預處理器扫尖,const是編譯器
  • define沒有{}區(qū)域限制,const是編譯器處理递鹉,完全符合編譯器的邏輯判斷和語法分析
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市藏斩,隨后出現(xiàn)的幾起案子躏结,更是在濱河造成了極大的恐慌,老刑警劉巖狰域,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媳拴,死亡現(xiàn)場離奇詭異黄橘,居然都是意外死亡,警方通過查閱死者的電腦和手機屈溉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門塞关,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人子巾,你說我怎么就攤上這事帆赢。” “怎么了线梗?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵椰于,是天一觀的道長。 經(jīng)常有香客問我仪搔,道長瘾婿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任烤咧,我火速辦了婚禮偏陪,結果婚禮上,老公的妹妹穿的比我還像新娘煮嫌。我一直安慰自己笛谦,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布昌阿。 她就那樣靜靜地躺著揪罕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宝泵。 梳的紋絲不亂的頭發(fā)上好啰,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音儿奶,去河邊找鬼框往。 笑死,一個胖子當著我的面吹牛闯捎,可吹牛的內容都是我干的椰弊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓤鼻,長吁一口氣:“原來是場噩夢啊……” “哼秉版!你這毒婦竟也來了?” 一聲冷哼從身側響起茬祷,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤清焕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秸妥,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡滚停,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了粥惧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片键畴。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖突雪,靈堂內的尸體忽然破棺而出起惕,到底是詐尸還是另有隱情,我是刑警寧澤咏删,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布惹想,位于F島的核電站,受9級特大地震影響饵婆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜戏售,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一侨核、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灌灾,春花似錦搓译、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嘿般,卻和暖如春段标,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炉奴。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工逼庞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瞻赶。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓赛糟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親砸逊。 傳聞我的和親對象是個殘疾皇子璧南,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容

  • C語言中的const const是C語言中保留的一個關鍵字,它用來限定一個變量是只讀的师逸,即不可變的司倚。程序中使用co...
    霜之幽語閱讀 421評論 0 1
  • const是C語言中保留的一個關鍵字,表示變量是只讀的,即不可改變的常量对湃。 (1)用const修飾一般變量(C語言...
    一木之夏閱讀 288評論 0 0
  • 1. const 常量變量const 類型說明符 變量名 常引用const 類型說明符 &引用名 常對象類名 co...
    一葉之界閱讀 952評論 0 2
  • 1.const 修飾常量: const修飾的變量不可變拍柒,只能在初始化時賦值心傀。以下兩種寫法效果是一樣的: const...
    caoxian閱讀 314評論 0 0
  • 之所以寫這個實在是有感于C++ 中const的和java中final的有某些類似的情況初學java的人肯定有這種困...
    c7d122ec46c0閱讀 1,650評論 0 2