這節(jié)課我們來講一講指針常量和常量指針。
這兩個(gè)的關(guān)系,就跟指針數(shù)組、數(shù)組指針一樣,初學(xué)者,很難分的清。
首先是指針常量。
?我們聽過整型常量、字符常量、字符串常量。整型常量是個(gè)不能修改的整數(shù),字符常量是個(gè)不能修改的字符。
那指針常量就很好理解了,是個(gè)不能修改的指針。
它只能指向字符 'h',如果強(qiáng)行進(jìn)行p++操作,編譯的時(shí)候就會(huì)報(bào)錯(cuò)。
我們稱指針p為指針常量。
其實(shí)在C語言中,說他是常量不合適,只讀變量更合適,就是可以通過其他方式讓p指向字符 'e'。
接下來是常量指針。
?我們知道整型指針、字符指針。整型指針是指針指向整數(shù),字符指針是指針指向字符,那常量指針就很好理解了,指針指向常量。
如果你想通過p去修改字符串的值,那絕對(duì)是不可以的,比如:
總結(jié)一些,指針常量是指針本身不能修改,常量指針是指針指向的內(nèi)容不能修改。

首先是指針常量。

那指針常量就很好理解了,是個(gè)不能修改的指針。
chararr[] = "helloworld";
char*constp=arr;
比如指針p,因?yàn)樗籧onst修飾,所以p不能修改。
它只能指向字符 'h',如果強(qiáng)行進(jìn)行p++操作,編譯的時(shí)候就會(huì)報(bào)錯(cuò)。
我們稱指針p為指針常量。
其實(shí)在C語言中,說他是常量不合適,只讀變量更合適,就是可以通過其他方式讓p指向字符 'e'。
char str[] = "helloworld";
char*constp=str;
char **q = (char **)&p;
(*q)++;
以上代碼,可以讓指針 p 指向字符'e'。接下來是常量指針。

char *p = "helloworld";
比如這樣的代碼。字符串"helloworld"存放在只讀數(shù)據(jù)區(qū),我們一般稱它為字符串常量,指針p指向這個(gè)字符串,所以就可以把p稱作常量指針。
const char *p = "helloworld";
在語句的前面加上const就更能說明問題了。如果你想通過p去修改字符串的值,那絕對(duì)是不可以的,比如:
*p='a';
編譯的時(shí)候就會(huì)報(bào)錯(cuò)。總結(jié)一些,指針常量是指針本身不能修改,常量指針是指針指向的內(nèi)容不能修改。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7630瀏覽量
140826 -
字符
+關(guān)注
關(guān)注
0文章
235瀏覽量
25522 -
字符串
+關(guān)注
關(guān)注
1文章
589瀏覽量
21198 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71084 -
數(shù)組
+關(guān)注
關(guān)注
1文章
419瀏覽量
26433
原文標(biāo)題:指針常量和常量指針
文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
Go語言常量的聲明
在 Go 語言中, 常量 表示的是固定的值,常量表達(dá)式的值在編譯期進(jìn)行計(jì)算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的數(shù)據(jù)類型只可以是
發(fā)表于 07-20 15:24
?539次閱讀
指針到底能不能修改其指向的常量字符串?
1.指針到底能不能修改其指向的常量字符串?今天做一個(gè)字符串右移函數(shù)時(shí),直接使用指針來修改字符串常量的值出現(xiàn)了奇怪運(yùn)行時(shí)錯(cuò)誤。代碼如下:[tr=transparent]#include&
發(fā)表于 03-14 17:03
函數(shù)指針常量和函數(shù)指針變量分清楚了嗎
有三點(diǎn)收獲1. 將一個(gè)有static 靜態(tài)變量的函數(shù)變成了一個(gè)可重入的函數(shù)2. 函數(shù)指針常量 和 函數(shù)指針變量分清楚了3. 通過實(shí)例了解到了什么時(shí)候需要定時(shí)回調(diào)函數(shù)傳入?yún)?shù)
發(fā)表于 02-28 06:22
java 常量池靜態(tài)變量詳解
Java中的常量池,實(shí)際上分為兩種形態(tài):靜態(tài)常量池和運(yùn)行時(shí)常量池。 所謂靜態(tài)常量池,即*.class文件中的常量池,class文件中的
發(fā)表于 09-27 13:01
?10次下載

單片機(jī)的結(jié)構(gòu)體和指針等資料說明
本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)的結(jié)構(gòu)體和指針等資料說明包括了:?jiǎn)纹瑱C(jī)的常量,單片機(jī)的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
發(fā)表于 12-05 17:23
?17次下載

單片機(jī)的常量和變量與數(shù)組的詳細(xì)資料說明
本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)的常量和變量與數(shù)組的詳細(xì)資料說明包括了:?jiǎn)纹瑱C(jī)的常量,單片機(jī)的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
發(fā)表于 12-11 17:36
?13次下載

變量和常量之間的差異
Windows -編程-變量和常量之間的差異 無法更改變量的值可能會(huì)讓您想起大多數(shù)其他語言都有的另一個(gè)編程概念:常量。與不可變變量一樣,常量是綁定到名稱且不允許更改的值,但常量和變量之
發(fā)表于 10-19 17:24
?963次閱讀
C++中const以及this指針的使用
const 作用 修飾變量,說明該變量不可以被改變; 修飾指針,分為指向常量的指針(pointer to const)和自身是常量的指針(
嵌入式c語言指針指向常量
地址的,原因是字符串為常量,c語言編譯器會(huì)對(duì)一樣的常量進(jìn)行操作,內(nèi)存中只保留一份copy。ps:c語言中常量是放在.rodata中,.rodata是在.text代碼段中。...
發(fā)表于 11-29 17:51
?12次下載

String-MCU內(nèi)存字符串和Flash字符串指針
? 很多時(shí)候,MCU受指今影響,訪問Flash和內(nèi)部RAM時(shí)的方法不同,所以編譯器在編譯Flash數(shù)據(jù)常量操作和RAM常量操作時(shí)的生成的方法也不一樣。同樣若指針指向Falsh區(qū)數(shù)據(jù)或RAM區(qū)數(shù)據(jù)
發(fā)表于 12-02 09:51
?3次下載

C語言的常量-2
在C語言中,字符型常量是最特別的一種常量。他的特別之處在于我們需要對(duì)其使用指定的定界符對(duì)其進(jìn)行限制。定界符為 ‘’ 。字符型常量可以分為兩種,一種是字符常量,另一種是字符串

Java中常量基礎(chǔ)知識(shí)分享
什么是字面常量?
**2 ****方法**
拿第一行輸出語句來說,這行代碼輸出了 “hello” 這個(gè)字符串,無論何時(shí)何地運(yùn)行程序,輸出的這個(gè)字符串都不會(huì)變,這就是字面常量。
定義:常量即程序運(yùn)行期間,固定不變

常量的基本知識(shí)和使用示例
常量是具有固定值的數(shù)據(jù),其值在程序運(yùn)行期間不能更改。常量在程序執(zhí)行期間可由各種程序元素讀取,但不能被覆蓋。不同的常量值通常會(huì)指定相應(yīng)的表示方式,具體取決于數(shù)據(jù)類型和數(shù)據(jù)格式。類型與非類型表示方式不同。
西門子博途:全局用戶常量的規(guī)則
常量值可以通過用戶常量的幫助保存。通常,控制器中有 OB、FC 和 FB 的局部常量和整個(gè)用戶程序的全局常量。
發(fā)表于 01-16 09:28
?3038次閱讀

評(píng)論