目錄
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供雞東網(wǎng)站建設(shè)、雞東做網(wǎng)站、雞東網(wǎng)站設(shè)計(jì)、雞東網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、雞東企業(yè)網(wǎng)站模板建站服務(wù),10多年雞東做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。一.typedef int* pint 與 const pint
二.typedef const int *pint?與?pint
三.總結(jié)
《C++ Primer》中指出,typedef與指針代指復(fù)合類型別名時(shí),可能有意向不到的情況。
下面我們以int為例:
一.typedef int* pint 與 const pint此時(shí)typedef的類型是int的指針,即指針類型。
既然pint本身是指針類型,那么const pint修飾的就是指針類型,pint本身就是指向int的常量指針。
即const pint可以改成這種形式:
const pint ->int* const
而人們往往會(huì)錯(cuò)誤的替換成const int*的形式,這就是誤解了const的修飾對(duì)象。?
以下面代碼為例:
typedef int* pint;
int a = 1;
int b = 2;
const pint p = &a;
//即int* const p = &a
p = &b;//錯(cuò)誤,常量指針不能修改指向
*p = 3;//正確,指針指向int變量
//注意:const pint p 與 pint const p等價(jià)
那么怎樣才能得到我們想要的const int*呢??
二.typedef const int *pint?與?pint雖然pint還是一個(gè)指針類型數(shù)據(jù),但因?yàn)閏onst int的存在,此時(shí)int是const類型的數(shù)據(jù)。
pint此時(shí)指向const int,即指向常量int的指針。
此時(shí)pint可變?yōu)槿缦滦问剑?/p>
pint ->const int*?
以下面代碼為例:
typedef const int* pint;
int a = 1;
int b = 2;
pint p = &a;
//即const int* p = &a;
*p = 3;//錯(cuò)誤,p指向常量
p = &b;//正確,p本身是指針變量
三.總結(jié)只要typedef中沒有聲明const,那么指針永遠(yuǎn)指向變量。
只要類型別名在使用時(shí)有const修飾,那么指針永遠(yuǎn)是常量指針。
即typedef中const決定指向?qū)ο髮傩?,定義時(shí)const決定指針自身屬性。
說的官方一點(diǎn)就是typedef決定底層const,定義決定頂層const。?
可以總結(jié)出如下表格:
typedef | 定義 | 替換形式 | 含義 |
---|---|---|---|
typedef int* pint; | pint p = &a; | int* p | 指向變量的指針 |
const pint p = &a; | int* const p | 指向變量的常量指針 | |
typedef const int* pint; | pint p = &a; | const int* p | 指向常量的指針 |
const pint p = &a; | const int* const p | 指向常量的常量指針 |
先解決問題再寫代碼——John Johnson
如有錯(cuò)誤,敬請斧正?
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享文章:Primer筆記——typedef指針類型別名時(shí)的const陷阱-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://m.newbst.com/article16/deojgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、靜態(tài)網(wǎng)站、Google、網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容