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