欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

如果你按照下面這種方式在C++中定義一個(gè)const類型的變量,那么這個(gè)變量就直接退化為了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的修飾作用

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

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

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

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

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

const的類型轉(zhuǎn)換

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

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

int *q的類型是int *,int *const p的類型也是int *,因?yàn)閏onst的右邊沒有*號,所以const不參與類型中,而const int *w的類型就是const int*了,因?yàn)閏onst的右邊存在*號。

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

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

相關(guān)文章

  • C語言實(shí)現(xiàn)拼圖游戲源碼

    C語言實(shí)現(xiàn)拼圖游戲源碼

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)拼圖游戲源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++ Futures與Promises線程使用示例講解

    C++ Futures與Promises線程使用示例講解

    future和promise的作用是在不同線程之間傳遞數(shù)據(jù)。使用指針也可以完成數(shù)據(jù)的傳遞,但是指針非常危險(xiǎn),因?yàn)榛コ饬坎荒茏柚怪羔樀脑L問;而且指針的方式傳遞的數(shù)據(jù)是固定的,如果更改數(shù)據(jù)類型,那么還需要更改有關(guān)的接口,比較麻煩
    2022-11-11
  • C++編寫實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    C++編寫實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了C++編寫實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 淺析C++中類模板的用法

    淺析C++中類模板的用法

    C++類模板是一種用于創(chuàng)建通用類的工具,它允許我們定義一個(gè)通用類,支持多種類型。本文就來簡單講講它的具體使用吧,感興趣的可以了解一下
    2023-04-04
  • C語言中關(guān)于計(jì)算字符串長度的幾種方式

    C語言中關(guān)于計(jì)算字符串長度的幾種方式

    這篇文章主要介紹了C語言中關(guān)于計(jì)算字符串長度的幾種方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 關(guān)于c++ 智能指針及 循環(huán)引用的問題

    關(guān)于c++ 智能指針及 循環(huán)引用的問題

    下面小編就為大家?guī)硪黄P(guān)于c++ 智能指針及 循環(huán)引用的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++編寫LINUX守護(hù)進(jìn)程的實(shí)現(xiàn)代碼

    C++編寫LINUX守護(hù)進(jìn)程的實(shí)現(xiàn)代碼

    這篇文章主要介紹了如何使用C++實(shí)現(xiàn)LINUX守護(hù)進(jìn)程,文中代碼非常詳細(xì),供大家學(xué)習(xí)參考,感興趣的小伙伴可以了解下
    2020-06-06
  • 深入分析C語言中結(jié)構(gòu)體指針的定義與引用詳解

    深入分析C語言中結(jié)構(gòu)體指針的定義與引用詳解

    本篇文章是對C語言中結(jié)構(gòu)體指針的定義與引用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++?解決求兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)問題

    C++?解決求兩個(gè)鏈表的第一個(gè)公共結(jié)點(diǎn)問題

    本文主要介紹了利用C++實(shí)現(xiàn)輸入兩個(gè)無環(huán)的單向鏈表時(shí),找出它們的第一個(gè)公共結(jié)點(diǎn)的問題。文章中的示例代碼簡潔易懂,感興趣的同學(xué)可以和小編一起學(xué)習(xí)一下
    2021-12-12
  • C語言實(shí)現(xiàn)循環(huán)隊(duì)列

    C語言實(shí)現(xiàn)循環(huán)隊(duì)列

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)循環(huán)隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論