C語(yǔ)言編程const遇上指針?lè)治?/h1>
更新時(shí)間:2021年09月17日 11:12:56 作者:Booksort
本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中當(dāng)Const遇上指針的分析講解,有需要的朋友可以借鑒參考下,希望可以有所幫助
const關(guān)鍵字
可以有很多用處,比如:
#define ROW 10
就代表ROW的值恒為10,不可修改。
而
const int ROW=10;
也可以將值恒定,無(wú)法修改。還有
const int num[10];//將數(shù)組整個(gè)保護(hù),無(wú)法修改。
但,并不是將被保護(hù)量變?yōu)槌A?,而是在處理時(shí)將其看為常量,不能對(duì)其修改。
當(dāng)const與指針結(jié)合
我們先來(lái)看看這個(gè)
const int num[] = { 1,2,3,4,5 };
int* p = num;
num[0] = 10;
*p = 10;


這就會(huì)報(bào)錯(cuò),但用指針去修改就不會(huì)有任何問(wèn)題。指針并不是const指針。
但是,
比如
int num[] = { 1,2,3,4,5 };
const int* p=num;
定義了一個(gè)指向num數(shù)組的指針,又const指針p指向了num數(shù)組的首元素,也就是p中儲(chǔ)存了num[0]的地址。

而這個(gè),可以數(shù)組元素直接修改,但不能通過(guò)指針。不過(guò)可以又++p,讓指針指向別處。也就是說(shuō),指針可以自增。但是自增后比不意味著,p沒(méi)了const修飾,指針依舊不能去修改指針指向的值。

并且,也不能通過(guò)指針移動(dòng)數(shù)組表示法去修改,與上面描述的是一個(gè)意思。
不允許使用指針去修改指針指向的數(shù)據(jù)的值。

還有一種
int* const p;
這種類型,與上面的有差異。
這種類型,是不能改變指針指向的。但是卻可以利用指針去修改數(shù)組元素。

這種是不能指向別處的指針,只能指向初始化設(shè)置的地址。
再加一句
被const修飾的數(shù)組是不能賦給非const的指針。為了防止數(shù)組元素被修改。
以上就是C語(yǔ)言編程const遇上指針?lè)治龅脑敿?xì)內(nèi)容,更多關(guān)于C語(yǔ)言的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
-
Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫(kù)的詳細(xì)過(guò)程
這篇文章主要介紹了Win11+VS2022編譯FFmpeg6.0靜態(tài)庫(kù)的方法,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2023-08-08
-
利用C++求解八數(shù)碼問(wèn)題實(shí)例代碼
所謂八數(shù)碼問(wèn)題是指這樣一種游戲,將分別標(biāo)有數(shù)字1,2,3,…,8的八塊正方形數(shù)碼牌任意地放在一塊3×3的數(shù)碼盤上,放牌時(shí)要求不能重疊,下面這篇文章主要給大家介紹了關(guān)于利用C++求解八數(shù)碼問(wèn)題的相關(guān)資料,需要的朋友可以參考下 2022-11-11
-
OpenCV實(shí)現(xiàn)輪廓的發(fā)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了OpenCV如何實(shí)現(xiàn)輪廓的發(fā)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2019-05-05
-
C語(yǔ)言實(shí)現(xiàn)數(shù)組的循環(huán)移位的方法示例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)數(shù)組的循環(huán)移位的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2019-08-08
-
C++11如何實(shí)現(xiàn)無(wú)鎖隊(duì)列
這篇文章主要介紹了C++11如何實(shí)現(xiàn)無(wú)鎖隊(duì)列,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2021-08-08
最新評(píng)論
const關(guān)鍵字
可以有很多用處,比如:
#define ROW 10
就代表ROW的值恒為10,不可修改。
而
const int ROW=10;
也可以將值恒定,無(wú)法修改。還有
const int num[10];//將數(shù)組整個(gè)保護(hù),無(wú)法修改。
但,并不是將被保護(hù)量變?yōu)槌A?,而是在處理時(shí)將其看為常量,不能對(duì)其修改。
當(dāng)const與指針結(jié)合
我們先來(lái)看看這個(gè)
const int num[] = { 1,2,3,4,5 };
int* p = num;
num[0] = 10;
*p = 10;


這就會(huì)報(bào)錯(cuò),但用指針去修改就不會(huì)有任何問(wèn)題。指針并不是const指針。
但是,
比如
int num[] = { 1,2,3,4,5 };
const int* p=num;
定義了一個(gè)指向num數(shù)組的指針,又const指針p指向了num數(shù)組的首元素,也就是p中儲(chǔ)存了num[0]的地址。

而這個(gè),可以數(shù)組元素直接修改,但不能通過(guò)指針。不過(guò)可以又++p,讓指針指向別處。也就是說(shuō),指針可以自增。但是自增后比不意味著,p沒(méi)了const修飾,指針依舊不能去修改指針指向的值。

并且,也不能通過(guò)指針移動(dòng)數(shù)組表示法去修改,與上面描述的是一個(gè)意思。
不允許使用指針去修改指針指向的數(shù)據(jù)的值。

還有一種
int* const p;
這種類型,與上面的有差異。
這種類型,是不能改變指針指向的。但是卻可以利用指針去修改數(shù)組元素。

這種是不能指向別處的指針,只能指向初始化設(shè)置的地址。
再加一句
被const修飾的數(shù)組是不能賦給非const的指針。為了防止數(shù)組元素被修改。
以上就是C語(yǔ)言編程const遇上指針?lè)治龅脑敿?xì)內(nèi)容,更多關(guān)于C語(yǔ)言的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫(kù)的詳細(xì)過(guò)程
這篇文章主要介紹了Win11+VS2022編譯FFmpeg6.0靜態(tài)庫(kù)的方法,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
利用C++求解八數(shù)碼問(wèn)題實(shí)例代碼
所謂八數(shù)碼問(wèn)題是指這樣一種游戲,將分別標(biāo)有數(shù)字1,2,3,…,8的八塊正方形數(shù)碼牌任意地放在一塊3×3的數(shù)碼盤上,放牌時(shí)要求不能重疊,下面這篇文章主要給大家介紹了關(guān)于利用C++求解八數(shù)碼問(wèn)題的相關(guān)資料,需要的朋友可以參考下2022-11-11
OpenCV實(shí)現(xiàn)輪廓的發(fā)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了OpenCV如何實(shí)現(xiàn)輪廓的發(fā)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
C語(yǔ)言實(shí)現(xiàn)數(shù)組的循環(huán)移位的方法示例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)數(shù)組的循環(huán)移位的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
C++11如何實(shí)現(xiàn)無(wú)鎖隊(duì)列
這篇文章主要介紹了C++11如何實(shí)現(xiàn)無(wú)鎖隊(duì)列,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08

