最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中const關(guān)鍵字的用法圖文詳解

 更新時間:2024年08月06日 09:42:57   作者:咩咩大主教  
在C++中const是一個關(guān)鍵字,用于聲明常量,它可以用于多種情況,包括聲明常量變量、常量指針、以及成員函數(shù)中的常量性,這篇文章主要給大家介紹了關(guān)于C++中const關(guān)鍵字用法的相關(guān)資料,需要的朋友可以參考下

C語言和C++中const的不同

首先我們需要區(qū)分一下C語言中的const和C++中的const,C語言中的const修飾的變量可以不初始化,但如果將一個變量定位為const類型還不初始化,那么之后就不能對這個變量直接賦值了。

如果我們使用C語言中的const定義的變量指定數(shù)組的大小,那么就會直接報錯,因為數(shù)組大小的初始化必須是一個常量,實際上在C語言中,const確實不是用來定義一個常量的,而是用來定義一個常變量的,只是這個變量的值不能被直接修改(通過指針還是可以修改這塊內(nèi)存的值的),除此之外這個變量和其他的C語言的變量沒什么區(qū)別,甚至連編譯生成指令的方式都是一樣的。

但是在C++中,const就是真正用來定義一個常量的,不進(jìn)行初始化就會直接報錯。

這主要是因為常量的編譯方式和變量的編譯方式不同,常量在編譯階段會將整個程序中這個常量的名稱都替換為這個常量的值,那么如果你在定義一個常量的時候,還不進(jìn)行初始化的話,編譯器就不知道要替換為什么值,自然就會直接報錯了。

用C++中的const修飾的變量可以初始化數(shù)組的大小,也說明了這個變量實際上是一個常量。

當(dāng)然了既然已經(jīng)用const修飾作為常量了,那么這個變量就不能作為左值來使用了,畢竟你不能修改一個常量的值嘛。

如果你按照下面這種方式在C++中定義一個const類型的變量,那么這個變量就直接退化為了C語言中的常變量了。

	int a = 10;
	const int p = a;
	return 0;

C++中的const配合一級指針使用 

 一般來說,在C++中const配合一級指針使用有四種形式。

	const int *p
	int const* p;
	int* const p;
	const int* const p;

const的修飾作用

那么很多人其實分不清這上面四種const用法所產(chǎn)生的效果,實際上,在C++中const修飾的是離它最近的類型。

比如const int *p,這個const顯然修飾的是int類型,也就是*p,p本身是一個int*類型的,*p就是int類型嘛,代表*p不能被改變。

int const *p,這個const離int最近,所以也是修飾int類型,同樣是*p,代表*p不能被改變,也就是指針?biāo)赶虻闹挡荒芨淖儭?/p>

int *const p的const就是離int *最近了,所以修飾的是int*類型,也就是p,代表p所指向的地址不能改變。

const int * const p有兩個const,離第一個const最近的是int,離第二個const最近的是int *,所以第一個const修飾的是*p,代表*p不能改變,第二個const修飾的是p,代表p不能改變,所以呢,這個指針?biāo)赶虻闹挡荒鼙恍薷?,指向的地址也不能被修改?/p>

const的類型轉(zhuǎn)換

對于const的類型轉(zhuǎn)換,我們需要知道一個原則,那就是const的右邊如果沒有指針符號的話,const不參與類型之中。

	int* q;
	int* const p;
	const int* w;

int *q的類型是int *,int *const p的類型也是int *,因為const的右邊沒有*號,所以const不參與類型中,而const int *w的類型就是const int*了,因為const的右邊存在*號。

另外呢,從int *是可以轉(zhuǎn)換到const int *的,但是const int *不能轉(zhuǎn)換為int *,否則不就代表你可以修改這個指針?biāo)赶虻闹盗藛帷?/p>

到此這篇關(guān)于C++中const關(guān)鍵字用法的文章就介紹到這了,更多相關(guān)C++ const關(guān)鍵字用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

台北县| 利川市| 丰城市| 西宁市| 万年县| 延安市| 炉霍县| 南京市| 日照市| 盐源县| 洛浦县| 新河县| 永靖县| 内丘县| 马关县| 延长县| 连城县| 西乌珠穆沁旗| 吉水县| 垣曲县| 汾阳市| 建水县| 定南县| 乌拉特后旗| 宁远县| 易门县| 武功县| 庆安县| 晋城| 乐亭县| 麻栗坡县| 龙口市| 平度市| 塔城市| 炉霍县| 手机| 定南县| 神农架林区| 阿城市| 兴安县| 林西县|