C++ const修饰符和指针
C++ const修飾符和指針
開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年04月10日 const修飾符,是用來修飾變量,被const修飾符,修飾過的變量,就叫做常量,常量是一種只能被讀取,不能被修改的量。在C++聲明一個常量時,不但要const修飾符還有在聲明時就要給它進行初始化,你不給它初始化,編譯器就會報錯,不給const修飾符就不是常量,下面是對常量只讀屬性和聲明的示例void main()
{
const int a = 10;
a = 15;
}
當你嘗試給常量賦值時,編譯器會報錯,并且給你提示,意思是表達式必須是可以修改的左值,證明了常量是不可以修改的,那么你不給常量初始化編譯器又會報什么錯呢?
我們可以看到當我不給常量賦值時,編譯器報錯,并提示常量a需要初始值設定項,證明了常量必須進行初始化操作。
那么我們用const修飾符修飾指針呢?又有什么樣的效果?指針和普通變量不同指針存儲的是地址,那么const修飾符對指針修飾產生的效果有三種。我們先說第一種。
先看代碼和結果我們再說第一種
void main()
{
int x = 10;
const int *a;
a = &x;
cout << “a所指向的地址:” << a << “\n”
<< “a的解地址” << *a << “\n”;
}
通過結果和代碼我們可以知道被const修飾符這樣修飾的指針還是可以獲得地址和解地址的,那么可以改變解地址后的值嗎?因為指針是可以通過地址修改值的,那么讓const修飾過還行嗎?
這個錯誤和上面的是一樣的,我們現在可以知道,const這樣修飾的話,會使指針無法通過解地址修改x的值,這是第一種的效果,我們稱它為指向常量的指針,那么第二種
我們發現第二種有兩個錯誤,和之前的一樣,意思這個指針要進行初始化,該初始化是固定不可修改的。
void main()
{
int x = 10; int *const a= &x;
*a = 15;
cout << *a << “\n”;
}
我們可以知道的是,這樣修飾的指針是可以正常的對解地址的值進行賦值的,那么我們一般稱它為常量指針
那么第三種呢則是這兩種的結合體,不但不可以對解地址賦值,還不能改變指針所指向的地址,而且還必須進行初始化,反正就是什么都不能動,但是我們可以正常的讀取值,這種結合了第一第二種特性,那么它名字也是結合的就是指向常量的常量指針,這就是const修飾符對指針修飾的三種不同的效果。
總結
以上是生活随笔為你收集整理的C++ const修饰符和指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 极光:2021年移动互联网母婴亲子行业研
- 下一篇: 11个方法,打造用户增长体系