C語言編程const遇上指針分析
const關(guān)鍵字
可以有很多用處,比如:
#define ROW 10
就代表ROW的值恒為10,不可修改。
而
const int ROW=10;
也可以將值恒定,無法修改。還有
const int num[10];//將數(shù)組整個保護,無法修改。
但,并不是將被保護量變?yōu)槌A浚窃谔幚頃r將其看為常量,不能對其修改。
當(dāng)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)文章
C++深入講解namespace與string關(guān)鍵字的使用
namespace命名空間或者叫名字空間,傳統(tǒng)的c++只有一個全局的namespace,namespace引入了復(fù)雜性。namespace允許像類,對象,函數(shù)聚集在一個名字下。本質(zhì)上講namespace是對全局作用域的細分2022-05-05C++中g(shù)etline()、gets()等函數(shù)的用法詳解
這篇文章主要介紹了C++中g(shù)etline()、gets()等函數(shù)的用法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02C語言數(shù)據(jù)結(jié)構(gòu)深入探索順序表
順序表,全名順序存儲結(jié)構(gòu),是線性表的一種,線性表用于存儲邏輯關(guān)系為“一對一”的數(shù)據(jù),順序表自然也不例外,不僅如此,順序表對數(shù)據(jù)的物理存儲結(jié)構(gòu)也有要求,跟隨下文來具體了解吧2022-03-03vs2019 Com組件初探之簡單的COM編寫及實現(xiàn)跨語言調(diào)用的方法
這篇文章主要介紹了vs2019 Com組件初探之簡單的COM編寫及實現(xiàn)跨語言調(diào)用的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12C語言使用scanf連續(xù)輸入字符串出現(xiàn)的問題
這篇文章主要介紹了C語言使用scanf連續(xù)輸入字符串出現(xiàn)的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12