寫在前面:大家好K。首先爲你點進這篇有趣的文章點贊👍!文章在撰寫過程中難免有疏漏和錯誤,歡迎你在下方留言指出文章的不足之處;如果覺得這篇文章對你有用,也歡迎你點贊和留下你的評論。更多內容請點進👉我的博客K。👈閱覽。
1. 名字區分
// 指針變量定義方法
// 示例:定義一個指向int類型的指針,初始化爲空
int * p = NULL;
衆所周知,*
在定義時標誌這是指針,在使用時表示取內存單元內容;p
是變量名。
這樣被定義好後,可以對變量名p
有兩個操作:
-
查看
*p
(p所指內容)的值,也可修改*p
的值; -
查看
p
(p本身存放了所指內存的地址值)的值,也可修改p
的值(即修改其所指)
如果要定義指針常量、常量指針,加const
的位置在*
前或變量名p
前,那麼它倆該如何區分呢?
記憶方法
const
含義是”常量“,那麼
- 常量指針
申明示例:
const int * p = NULL
或int const * p=Null
忽略int
說明類型,*
標誌這是指針。∵const
在*
前,表示常量指針
- 指針常量
申明示例:
int * const p = NULL
*
標誌這是指針。∵*
在cosnt
前,表示指針常量
2. 用法區分
const
含義:被
const
修飾的量,在定義後就不能改變
*
含義:
在定義時標誌這是指針
在使用時表示取內存單元內容
2.1 常量指針 const *
申明示例:
const int * p = NULL
或int const * p=Null
const
修飾*
*
的第一個含義,僅在定義變量時用。現在我們討論的是使用時的區別,所以只看*
的第二個含義–取內存單元內容
-
*
被const
修飾,表示*p
是只讀的,不能被修改值 -
但是,
p
是可以修改的,即可以重新指向另一個內存單元
2.2 指針常量 * const
申明示例:
int * const p = NULL
const
修飾變量名p
-
const
在*
的後面,所以不關*
的事。所以,*p
(即內容值)可以隨意修改 -
p
被const
修飾,所以,p
(即指向)不能被修改。
3. C++的引用與指針常量
定義示例:int &b = a;
查看文檔可知,引用只可作爲唯一一個變量的別名(在定義後就不能被修改成別的變量的別名)
使用時,a
和b
的值同時修改同時變化
是不是和指針常量很像:內容可改,而指向不能改
引用的內部實現就是一個指針常量,然後被高度封裝以方便使用