最近在分析
linux
驅動的過程過程中遇到一些關於
const
的使用,現在在這裡詳細剖析一下: 一,
const int *p;
首先分析一下幾個概念:
1:p
是乙個指標變數,因而它也是乙個變數,所謂變數就有變數的位址和變數的值,而這裡
p變數的值就是乙個位址,該位址下存放的是乙個整數,
*p的值等於這個整數。 2.
在*p的前面加乙個
const
只是告訴編譯器
*p所指向的空間是乙個唯讀的空間。顯然,如果程式中存在
*p = 8
這樣的**是不允許的,編譯器會報錯的。 3.
既然*p = 8
是不允許的,那麼*(
p + 1
)= 8
可以嗎?,
這也是不允許的,因而前面已經有
const int *p
,那麼編譯會認為*(
p+1)
所指向的空間也是唯讀的,所以這是編譯器還是會報錯的。
4.p = p + 1;
則是可以的,因為這是對指標變數中存放的數值
(當然也是個位址
)進行操作,僅此而已。 二,
int * const p; 1.
從上面的分析中知道,
p也是乙個變數,具有變數的一切屬性,它有自己的記憶體位址,並在這個位址上有自己的值,而這個值是也是乙個位址。
2.int * const p
;只是告訴編譯器
指標變數
p所在的記憶體空間是唯讀的,當然就不能對它進行改變了
( 即寫
),其實它本質上和
const int p
;是一樣的。只是前者
p中存放的數值表示的含義是乙個位址,而後者表示的含義只是乙個普通數
(區別於位址
)而已。
約數詳細分析
約數詳細分析 我們先來認識一下約數 約數分正約數和負約數兩種,我們一般只討論正約數。也就是說,接下來所提的約數,只考慮正約數。如果有乙個數k,滿足k n,那麼k就是n 的約數 因數 n是k的倍數。求乙個數的約數是資訊學競賽裡乙個基礎的不能再基礎的問題。如果只求乙個數,最容易想到的就是列舉。當然列舉也...
vue cli 詳細分析
vue lic 是 vue 官方提供的腳手架工具,預設搭建好乙個專案的基本架子,我們只需要在此基礎上進行相應的修改即可。注意 安裝 vue cli 前需要事先配置好 node 環境 npm install g vue cli 如果是 mac 電 sudo表示以管理員的許可權 sudo install...
LiveData詳細分析
目錄介紹 感知生命週期 自動解除資料訂閱 2.1 具有很明顯的優點 不會發生記憶體洩露 不會再產生由於activity處於stop狀態而引起的崩潰 不需要再解決生命週期帶來的問題 實時資料重新整理 解決configuration change問題 資料共享 2.2 細節點補充4.1 單獨使用live...