C語言編程const遇上指針分析
const關(guān)鍵字
可以有很多用處,比如:
#define ROW 10
就代表ROW的值恒為10,不可修改。
而
const int ROW=10;
也可以將值恒定,無法修改。還有
const int num[10];//將數(shù)組整個保護,無法修改。
但,并不是將被保護量變?yōu)槌A?,而是在處理時將其看為常量,不能對其修改。
當const與指針結(jié)合
我們先來看看這個
const int num[] = { 1,2,3,4,5 };
int* p = num;
num[0] = 10;
*p = 10;


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

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

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

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

這種是不能指向別處的指針,只能指向初始化設(shè)置的地址。
再加一句
被const修飾的數(shù)組是不能賦給非const的指針。為了防止數(shù)組元素被修改。
以上就是C語言編程const遇上指針分析的詳細內(nèi)容,更多關(guān)于C語言的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Win11+?VS2022編譯?FFmpeg6.0?靜態(tài)庫的詳細過程
這篇文章主要介紹了Win11+VS2022編譯FFmpeg6.0靜態(tài)庫的方法,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例
這篇文章主要介紹了C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08

