【C/C++】指針常量、常量指針分不清?竟還能這樣記!

寫在前面:大家好K。首先爲你點進這篇有趣的文章點贊👍!文章在撰寫過程中難免有疏漏和錯誤,歡迎你在下方留言指出文章的不足之處;如果覺得這篇文章對你有用,也歡迎你點贊和留下你的評論。更多內容請點進👉我的博客K。👈閱覽。

1. 名字區分

// 指針變量定義方法
// 示例:定義一個指向int類型的指針,初始化爲空
int * p = NULL;

衆所周知,*在定義時標誌這是指針,在使用時表示取內存單元內容p是變量名。

這樣被定義好後,可以對變量名p有兩個操作:

  1. 查看*p(p所指內容)的值,也可修改*p的值;

  2. 查看p(p本身存放了所指內存的地址值)的值,也可修改p的值(即修改其所指)

如果要定義指針常量、常量指針,加const的位置在*前或變量名p前,那麼它倆該如何區分呢?

記憶方法

const含義是”常量“,那麼

  • 常量指針

申明示例:const int * p = NULLint const * p=Null

忽略int說明類型,*標誌這是指針。∵const*前,表示常量指針

  • 指針常量

申明示例:int * const p = NULL

*標誌這是指針。∵*cosnt前,表示指針常量

2. 用法區分

const含義:

const修飾的量,在定義後就不能改變

*含義:

  1. 在定義時標誌這是指針

  2. 在使用時表示取內存單元內容

2.1 常量指針 const *

申明示例:const int * p = NULLint const * p=Null

const修飾*

*的第一個含義,僅在定義變量時用。現在我們討論的是使用時的區別,所以只看*第二個含義–取內存單元內容

  1. *const修飾,表示*p只讀,不能被修改值

  2. 但是,p是可以修改的,即可以重新指向另一個內存單元

2.2 指針常量 * const

申明示例:int * const p = NULL

const修飾變量名p

  1. const*的後面,所以不關*的事。所以,*p(即內容值)可以隨意修改

  2. pconst修飾,所以,p(即指向)不能被修改

3. C++的引用與指針常量

定義示例:int &b = a;

查看文檔可知,引用只可作爲唯一一個變量的別名(在定義後就不能被修改成別的變量的別名)

使用時,ab的值同時修改同時變化

是不是和指針常量很像:內容可改,而指向不能改

引用的內部實現就是一個指針常量,然後被高度封裝以方便使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章