C++ const和指針詳情
1、指針和const
我們知道const
關(guān)鍵字修飾的是不可變量,將它和指針一起使用,會(huì)有很多微妙的地方。
關(guān)于使用const
來修飾指針,有兩種不同的方式。第一種是讓指針指向一個(gè)常量對(duì)象,這樣可以防止使用該指針進(jìn)行修改指向的值。第二種則是將指針本身聲明為常量,可以防止改變指針指向的位置。下面我們來看下細(xì)節(jié)。
1.1 指向常量的指針
首先是指向常量的指針,含義是指針的類型是一個(gè)常量類型。所以寫成:
const int * p;
可以理解成p是一個(gè)指針,它的類型是const int
,也就是常量類型。它既可以用來指向一個(gè)常量類型,也可以指向一個(gè)非常量類型,下方的這兩種方式都是合法的:
int age = 23; const int* p = &age; const double price = 233; const double* pt = &price;
但是反過來,將一個(gè)const類型的變量賦值給一個(gè)非const的指針是非法的:
const int age = 23; int* p = &age; // 非法
如果非要這樣做,可以使用const_cast
運(yùn)算符進(jìn)行強(qiáng)制轉(zhuǎn)換,這個(gè)我們會(huì)在之后的文章當(dāng)中討論。
另外還有一個(gè)很有意思的點(diǎn),如果我們將一個(gè)非const
類型的變量賦給了const
類型的指針,雖然我們無法通過指針修改對(duì)應(yīng)的值,
但是通過變量修改卻是可以的:
int age = 23; const int* p = &age; *p = 233; // 非法 age = 233; // 合法
還有,我們無法修改指針指向的值,但是修改指針指向的位置是可以的:
int age = 23; int price = 233; const int* p = &age; p = &price;
1.2 const指針
上面我們介紹了指向const
的指針,還有另外一種指針叫做const
指針。const
指針指的是指針本身是const
修飾的,我們無法修改指針指向的位置。
int age = 23; int* const p = &age;
但是我們修改指針指向的值是可以的:
*p = 2333; // 合法
1.3 指針和內(nèi)容都不可變
當(dāng)然我們也可以將兩種const疊加使用,讓指針指向的對(duì)象以及對(duì)象的值都不可修改:
const int * const p = &age;
到此這篇關(guān)于C++ const
和指針詳情的文章就介紹到這了,更多相關(guān)C++ const
和指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
文章轉(zhuǎn)自公眾號(hào):Coder梁(ID:Coder_LT)
相關(guān)文章
詳解C語言中freopen()函數(shù)和fclose()函數(shù)的用法
這篇文章主要介紹了詳解C語言中freopen()函數(shù)和fclose()函數(shù)的用法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08C語言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11如何用C寫一個(gè)web服務(wù)器之GCC項(xiàng)目編譯
本文主要介紹了,如何用C寫一個(gè)web服務(wù)器,Linux下用GCC進(jìn)行項(xiàng)目編譯,對(duì)此感興趣的同學(xué),可以參考下。2021-05-05