真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Primer筆記——typedef指針類型別名時的const陷阱-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供雞東網(wǎng)站建設(shè)、雞東做網(wǎng)站、雞東網(wǎng)站設(shè)計、雞東網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、雞東企業(yè)網(wǎng)站模板建站服務(wù),10多年雞東做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

一.typedef int* pint 與 const pint

二.typedef const int *pint?與?pint

三.總結(jié)


《C++ Primer》中指出,typedef與指針代指復(fù)合類型別名時,可能有意向不到的情況。

下面我們以int為例:

一.typedef int* pint 與 const pint

此時typedef的類型是int的指針,即指針類型。

既然pint本身是指針類型,那么const pint修飾的就是指針類型,pint本身就是指向int的常量指針。

即const pint可以改成這種形式:

const pint ->int* const

而人們往往會錯誤的替換成const int*的形式,這就是誤解了const的修飾對象。?

以下面代碼為例:

typedef int* pint;
int a = 1;
int b = 2;
const pint p = &a;
//即int* const p = &a

p = &b;//錯誤,常量指針不能修改指向
*p = 3;//正確,指針指向int變量

//注意:const pint p 與 pint const p等價

那么怎樣才能得到我們想要的const int*呢??

二.typedef const int *pint?與?pint

雖然pint還是一個指針類型數(shù)據(jù),但因為const int的存在,此時int是const類型的數(shù)據(jù)。

pint此時指向const int,即指向常量int的指針。

此時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;//錯誤,p指向常量
p = &b;//正確,p本身是指針變量
三.總結(jié)

只要typedef中沒有聲明const,那么指針永遠(yuǎn)指向變量。

只要類型別名在使用時有const修飾,那么指針永遠(yuǎn)是常量指針。

即typedef中const決定指向?qū)ο髮傩?,定義時const決定指針自身屬性。

說的官方一點就是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


如有錯誤,敬請斧正?

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:Primer筆記——typedef指針類型別名時的const陷阱-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/deojgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部