【C++ grammar】常量、指针、Usage of using, typedef, and #define
目錄
- 1、常量 (Constant)
- 2、指針(Pointer)
- 3、Usage of using, typedef, and #define
1、常量 (Constant)
常量是程序中一塊數(shù)據(jù),這個(gè)數(shù)據(jù)一旦聲明后就不能被修改了。
如果這塊數(shù)據(jù)有一個(gè)名字,這個(gè)名字叫做命名常量;比如 const int A = 42; 其中A就是命名常量;
如果這塊數(shù)據(jù)(這個(gè)常量)從字面上看就能知道它的值,那它叫做“字面常量”,比如上面例子中的“42”就是字面常量
如果我們對(duì)PI進(jìn)行賦值操作,會(huì)報(bào)錯(cuò):表達(dá)式必須是可以修改的左值。
關(guān)于這個(gè)問題詳細(xì)的講解見:
1、https://blog.csdn.net/qq_42604176/article/details/108909002
2、https://blog.csdn.net/JQ_AK47/article/details/53169799
2、指針(Pointer)
指針有兩個(gè)屬性:
1、指針變量本身
2、指針變量指向的數(shù)據(jù)
解釋:由于x是個(gè)常量,所以它的值不可以被改變,也就是說(shuō)地址不能修改,也就是說(shuō)p存的地址是個(gè)常量,所以要加const。p可以指向其他變量
int x=5; int* const p =&x;解釋:p指針是個(gè)常量,它不能指向其他變量了。但是它指向的數(shù)據(jù)x是可以改變值的。
const int x=5; const int* const p =&x;解釋:x是個(gè)常量,p也是個(gè)常量,不能指向其他變量了
指針是一個(gè)地址,它長(zhǎng)得像 0x8FFF 這個(gè)樣子。地址呢,就是某個(gè)內(nèi)存位置的一個(gè)編號(hào)。那這個(gè)位置的內(nèi)存是可以存放一些數(shù)據(jù)的。這些數(shù)據(jù)就叫做“指針?biāo)傅臄?shù)據(jù)”或者“指針指向的數(shù)據(jù)”。
一些概念:
我們把指針放到一個(gè)變量里面,就是指針變量;
我們把指針放到常量中,就是指針常量;
那如果一個(gè)指針(也就是地址,比如0x8FFF)所指的數(shù)據(jù)(也就是0x8FFF這個(gè)內(nèi)存位置存放的數(shù)據(jù))是常量,這個(gè)指針被稱為常量指針。
所以,有一種東西,叫做“常量指針常量”。就是說(shuō),一個(gè)常量中存著一個(gè)指針,這個(gè)指針又指向另外一個(gè)常量。
Pointer to Constant (常量指針/常指針)
特征:指針?biāo)赶虻膬?nèi)容不可以通過指針的間接引用(*p)來(lái)改變。
Pointer Constant (指針常量)
指針常量”的含義是:指針本身的內(nèi)容是個(gè)常量,不可以改變
小結(jié)
從左往右看,先看到 * 即為常量指針,先看到const 即為指針常量。
const int * x
int * const y
問題:請(qǐng)你嘗試解釋下面代碼中的 pp 是個(gè)什么東西?
引用。px的別名,px是指針常量,pp是常指針常量
3、Usage of using, typedef, and #define
1、#define是預(yù)處理指示符,用來(lái)定義宏,編譯器不做檢查
2、typedef 創(chuàng)建能在任何位置
C++11中為 using 關(guān)鍵字賦予了一個(gè)類型聲明的新功能
這里的using是為了解決類型別名的問題。
之前我們遇到過這樣的語(yǔ)句:
表明將std空間的cin標(biāo)識(shí)符引入到當(dāng)前的程序里面來(lái)。cin是一個(gè)對(duì)象而不是一個(gè)類型。
所以如果我們這么寫:
編譯器會(huì)報(bào)錯(cuò)。
using與typedef的區(qū)別
typedef是把類型放在前面,而簡(jiǎn)寫的別名放在后面
如:typedef 類型 簡(jiǎn)寫的別名;
using用法:
using 簡(jiǎn)寫的類型別名 = 類型;
這樣類似于賦值的語(yǔ)法很直觀。
using的寫法比typedef的寫法更加直觀,所以,我們應(yīng)盡量使用using聲明新類型名。而且當(dāng)涉及到模版類型名時(shí),只能使用using。
編碼規(guī)范:
Names representing types must be in mixed case starting with upper case.
代表類型的名字必須首字母大寫并且其它字母大小寫混合
總結(jié)
以上是生活随笔為你收集整理的【C++ grammar】常量、指针、Usage of using, typedef, and #define的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “开封述天爵”上一句是什么
- 下一篇: 【C++ grammar】重载、内联、变