日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

const指针和指向常量的指针

發布時間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 const指针和指向常量的指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先看下面六種寫法:

1. const int p;2. const int *p;3. int const* p;4. int * const p;5. const int * const p;6. int const * const p;

那么我們應該怎么區分上面的寫法到底是指向常量的指針還是const指針(表示指針本身是常量)呢?

一個簡便方法:從由往左讀,遇到p就替換為“p is a”,遇到*就替換為“point to”,其余不變。

下面我們來一個一個看:

1. const int p; // p is a int const. p是一個int型常量 這個很簡單2. const int *p; //p is a point to int const. p是一個指針,指向int型常量。即p是一個指向int型常量的指針。3. int const* p; //與2相同 const int 和 int const 是一樣的意思。《C++ primer》中采用第一種寫法。4. int * const p; // p is a const point to int. p是一個指向int的const指針5. const int * const p; //p is a const point to int const. p是一個指向int型常量的const指針。6. int const * const p; //同5

知道怎么區分const指針和指向常量的指針,我們再來看看它們的定義。

指向常量的指針(point to cosnt)不能用于改變其所指對象的值。比如:

const double pi = 3.14; // pi是一個常量,不能改變它的值const double *cptr = &pi; //cptr指向pi,注意這里的const不能丟,因為普通指針不能指向常量*cptr = 3.33; //錯誤,試圖改變所指對象的值。不能給*cptr賦值,即不能改變指針所指對象的值 cout << cptr << endl;//輸出cptr的值//雖然不能改變其所指對象的值,但是它可以指向別的常量對象 //這樣的話 指針的值(也就是存放在指針中的那個地址)也會改變 比如: cosnt double pi2 = 6.28;cptr = &pi2; //正確 *cptr為6.28 cout << cptr << endl; //cptr的值變了

const指針表示指針本身是一個常量。由于指針是對象,因此就像其他對象一樣,允許把指針本身定為常量。cosnt指針必須初始化,并且一旦初始化,const指針的值就不能改變了。const指針的值到底是什么?其實就是存放在指針中的地址,這個地址是一個對象的地址。

把*放在const前面就表示指針是一個常量,這樣的書寫形式意味著不變的是指針本身的值而不是指向的對象的值(內容)。也就是說,那個地址不能再變了,但是我們可以改變那個地址上存放的內容。比如:

int i = 42;int * cosnt p = &i; //p是一個const指針,不能給p賦值 cosnt int i2 = 44;p = &i2; //錯誤 試圖給p賦值//雖然不能給p賦值,也就是不能改變p的值,但是我們可以通過p改變p所指的對象的內容。比如:*p = 46; //正確 此時i為46

指針本身是一個常量(即const指針)并不意味著不能通過指針修改其所指對象的值,能否這樣做完全依賴于所指對象的類型。比如,

const double pi = 4.4;const double *const pip = &pi; //pip是一個指向常量對象的const指針(還記得文章開頭的方法嗎)。

pip是一個指向常量的常量指針,則不論pip所指的對象值還是pip自己存儲的那個地址都不能改變。相反,上例中的p指向的是一般的非常量整數,所以p可以修改i的值。

完整代碼:

#include <iostream> using namespace std;int main(int argc, char const *argv[]) {const int b = 11;const int *p2 = &b; //指向常量的指針 底層const 不能改變p2的所指對象的值 但是可以改變p2的值(即指針的指向) 前提是仍然指向一個常量cout << *p2 << endl; //11cout << p2 << endl; //0x72fe38const int c = 22;p2 = &c;cout << *p2 << endl; //22cout << p2 << endl; //0x72fe34地址發生了改變int i = 9;int *const p1 = &i; //指針是一個常量(即常量指針)頂層const 不能改變p2的值(存放在p2中對象的地址) 但是可以改變對象的內容cout << p1 << endl; //0x72fe3c 這個地址不會再改變了*p1 = 88;cout << i << endl; //88cout << *p1 << endl; //88cout << p1 << endl; //0x72fe3creturn 0; }

對于指針來說,頂層const表示指針本身是一個常量,底層const表示指針所指的對象是一個常量。所以const指針是頂層cosnt,而指向常量的指針是底層const。

?

轉載于:https://www.cnblogs.com/bencai/p/8888760.html

總結

以上是生活随笔為你收集整理的const指针和指向常量的指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久wwww| 国产精品久久亚洲7777 | av影视网 | www.桃色av嫩草.com | 日韩午夜小视频 | 欧美黑人一级 | 欧美人妻精品一区二区三区 | 福利电影一区二区三区 | 制服 丝袜 激情 欧洲 亚洲 | 中文字幕在线观看 | 一本色道久久综合亚洲 | 亚洲综合欧美 | 韩国三级中文字幕hd久久精品 | 久久视频精品 | 日本性网站 | 最新毛片网站 | 日韩av首页 | 无码内射中文字幕岛国片 | 国产在线欧美日韩 | jizz教师 | 欧美中文字幕在线观看 | 亚洲涩情 | 操bbbbb | 台湾三级伦理片 | 性色一区二区三区 | 国产色视频一区二区三区qq号 | 国产大片在线观看 | 99操 | 精品美女一区 | 午夜视频网站在线观看 | 婷婷精品一区二区三区 | 波多野结衣欲乱上班族 | 特黄色大片 | 又爽av| 91精品国产91久久久久久黑人 | 久久综合亚洲色hezyo国产 | 国产一精品一aⅴ一免费 | 成人国产精品视频 | 国产va亚洲va在线va | 日韩人妻无码一区二区三区 | 福利视频大全 | 欧美成人免费网站 | 国产干b | 国产91一区 | 无码精品视频一区二区三区 | 国产精品二区一区二区aⅴ 一卡二卡三卡在线观看 | 精品一区二区久久久久蜜桃 | 久青草影院 | 538国产精品一区二区免费视频 | 超碰在线91| 久久官网 | 国产精品com | 91免费观看视频在线 | 国产成人一区二区三区电影 | 91麻豆精品国产理伦片在线观看 | 成人在线影视 | 成人免费aaa| 波多野结衣一区二区三区在线 | www黄色片网站 | 亲子乱一区二区三区 | 国产成人精品一二三区 | 日韩欧美一二三四区 | 日韩免费视频 | 亚洲麻豆视频 | 精品人妻一区二区三区三区四区 | 紧身裙女教师三上悠亚红杏 | 国内自拍第三页 | 日韩在线观看网址 | 夜夜操影院 | 亚洲区在线 | 奇米av在线 | 成人午夜剧场视频网站 | 中文字幕无码日韩专区免费 | 精品成人一区二区三区 | 亚洲天堂国产 | aaa级片 | 日本少妇毛茸茸高潮 | 久久靠逼视频 | 人人干人人草 | 欧美日韩一区二区三区在线播放 | 尤物精品在线观看 | 久色网 | 岛国精品在线 | 国产精品久久999 | 日韩有码在线视频 | 99精品人妻少妇一区二区 | 精品国产一区二区三区四区阿崩 | 免费的黄色的网站 | 国自产拍偷拍精品啪啪一区二区 | 亚洲三级免费观看 | 东京干手机福利视频 | 91久久视频 | 黄色高潮视频 | 三级黄片毛片 | 成人中文字幕+乱码+中文字幕 | 国产精品高潮呻吟av | 国产男女无套 | 免费av不卡在线观看 | 天天躁日日躁狠狠躁 |