C語(yǔ)言編程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浚窃谔幚頃r(shí)將其看為常量,不能對(duì)其修改。
當(dāng)const與指針結(jié)合
我們先來看看這個(gè)
const int num[] = { 1,2,3,4,5 }; int* p = num; num[0] = 10; *p = 10;
這就會(huì)報(bào)錯(cuò),但用指針去修改就不會(huì)有任何問題。指針并不是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ù)組元素直接修改,但不能通過指針。不過可以又++p,讓指針指向別處。也就是說,指針可以自增。但是自增后比不意味著,p沒了const修飾,指針依舊不能去修改指針指向的值。
并且,也不能通過指針移動(dòng)數(shù)組表示法去修改,與上面描述的是一個(gè)意思。
不允許使用指針去修改指針指向的數(shù)據(jù)的值。
還有一種
int* const p;
這種類型,與上面的有差異。
這種類型,是不能改變指針指向的。但是卻可以利用指針去修改數(shù)組元素。
這種是不能指向別處的指針,只能指向初始化設(shè)置的地址。
再加一句
被const修飾的數(shù)組是不能賦給非const的指針。為了防止數(shù)組元素被修改。
以上就是C語(yǔ)言編程const遇上指針分析的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++深入講解namespace與string關(guān)鍵字的使用
namespace命名空間或者叫名字空間,傳統(tǒng)的c++只有一個(gè)全局的namespace,namespace引入了復(fù)雜性。namespace允許像類,對(duì)象,函數(shù)聚集在一個(gè)名字下。本質(zhì)上講namespace是對(duì)全局作用域的細(xì)分2022-05-05C++中g(shù)etline()、gets()等函數(shù)的用法詳解
這篇文章主要介紹了C++中g(shù)etline()、gets()等函數(shù)的用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02C語(yǔ)言實(shí)現(xiàn)找出二叉樹中某個(gè)值的所有路徑的方法
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)找出二叉樹中某個(gè)值的所有路徑的方法,針對(duì)數(shù)據(jù)結(jié)構(gòu)中二叉樹的實(shí)用操作技巧,需要的朋友可以參考下2014-09-09C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)深入探索順序表
順序表,全名順序存儲(chǔ)結(jié)構(gòu),是線性表的一種,線性表用于存儲(chǔ)邏輯關(guān)系為“一對(duì)一”的數(shù)據(jù),順序表自然也不例外,不僅如此,順序表對(duì)數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)也有要求,跟隨下文來具體了解吧2022-03-03vs2019 Com組件初探之簡(jiǎn)單的COM編寫及實(shí)現(xiàn)跨語(yǔ)言調(diào)用的方法
這篇文章主要介紹了vs2019 Com組件初探之簡(jiǎn)單的COM編寫及實(shí)現(xiàn)跨語(yǔ)言調(diào)用的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12C語(yǔ)言使用scanf連續(xù)輸入字符串出現(xiàn)的問題
這篇文章主要介紹了C語(yǔ)言使用scanf連續(xù)輸入字符串出現(xiàn)的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12