這節(jié)課我們來講一講指針常量和常量指針。
這兩個的關(guān)系,就跟指針數(shù)組、數(shù)組指針一樣,初學(xué)者,很難分的清。
首先是指針常量。
?我們聽過整型常量、字符常量、字符串常量。整型常量是個不能修改的整數(shù),字符常量是個不能修改的字符。
那指針常量就很好理解了,是個不能修改的指針。![407d846e-b10e-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/36/wKgaomTnZp6AYKuFAAfKKmogx8s966.png)
它只能指向字符 'h',如果強(qiáng)行進(jìn)行p++操作,編譯的時候就會報錯。
我們稱指針p為指針常量。
其實(shí)在C語言中,說他是常量不合適,只讀變量更合適,就是可以通過其他方式讓p指向字符 'e'。
接下來是常量指針。
?我們知道整型指針、字符指針。整型指針是指針指向整數(shù),字符指針是指針指向字符,那常量指針就很好理解了,指針指向常量。
如果你想通過p去修改字符串的值,那絕對是不可以的,比如:
總結(jié)一些,指針常量是指針本身不能修改,常量指針是指針指向的內(nèi)容不能修改。
![3f196e94-b10e-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/36/wKgaomTnZp2AbDp3AAefIJAkZMk387.png)
首先是指針常量。
![3f6ef8c8-b10e-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/36/wKgaomTnZp6AdDBnAAfEcC9yMT4961.png)
那指針常量就很好理解了,是個不能修改的指針。
chararr[] = "helloworld";
char*constp=arr;
比如指針p,因為它被const修飾,所以p不能修改。![407d846e-b10e-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/36/wKgaomTnZp6AYKuFAAfKKmogx8s966.png)
它只能指向字符 'h',如果強(qiáng)行進(jìn)行p++操作,編譯的時候就會報錯。
我們稱指針p為指針常量。
其實(shí)在C語言中,說他是常量不合適,只讀變量更合適,就是可以通過其他方式讓p指向字符 'e'。
char str[] = "helloworld";
char*constp=str;
char **q = (char **)&p;
(*q)++;
以上代碼,可以讓指針 p 指向字符'e'。接下來是常量指針。
![40df1882-b10e-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/36/wKgaomTnZp6AOl31AAeBgc6m_74534.png)
char *p = "helloworld";
比如這樣的代碼。字符串"helloworld"存放在只讀數(shù)據(jù)區(qū),我們一般稱它為字符串常量,指針p指向這個字符串,所以就可以把p稱作常量指針。
const char *p = "helloworld";
在語句的前面加上const就更能說明問題了。如果你想通過p去修改字符串的值,那絕對是不可以的,比如:
*p='a';
編譯的時候就會報錯。總結(jié)一些,指針常量是指針本身不能修改,常量指針是指針指向的內(nèi)容不能修改。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137779 -
字符
+關(guān)注
關(guān)注
0文章
234瀏覽量
25264 -
字符串
+關(guān)注
關(guān)注
1文章
585瀏覽量
20610 -
指針
+關(guān)注
關(guān)注
1文章
481瀏覽量
70611 -
數(shù)組
+關(guān)注
關(guān)注
1文章
417瀏覽量
26033
原文標(biāo)題:指針常量和常量指針
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
Go語言常量的聲明
在 Go 語言中, 常量 表示的是固定的值,常量表達(dá)式的值在編譯期進(jìn)行計算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的數(shù)據(jù)類型只可以是
發(fā)表于 07-20 15:24
?440次閱讀
指針到底能不能修改其指向的常量字符串?
1.指針到底能不能修改其指向的常量字符串?今天做一個字符串右移函數(shù)時,直接使用指針來修改字符串常量的值出現(xiàn)了奇怪運(yùn)行時錯誤。代碼如下:[tr=transparent]#include&
發(fā)表于 03-14 17:03
嵌入式c語言指針指向常量相關(guān)資料分享
地址的,原因是字符串為常量,c語言編譯器會對一樣的常量進(jìn)行操作,內(nèi)存中只保留一份copy。ps:c語言中常量是放在.rodata中,.rodata是在.text代碼段中。...
發(fā)表于 01-24 06:32
函數(shù)指針常量和函數(shù)指針變量分清楚了嗎
有三點(diǎn)收獲1. 將一個有static 靜態(tài)變量的函數(shù)變成了一個可重入的函數(shù)2. 函數(shù)指針常量 和 函數(shù)指針變量分清楚了3. 通過實(shí)例了解到了什么時候需要定時回調(diào)函數(shù)傳入?yún)?shù)
發(fā)表于 02-28 06:22
java 常量池靜態(tài)變量詳解
Java中的常量池,實(shí)際上分為兩種形態(tài):靜態(tài)常量池和運(yùn)行時常量池。 所謂靜態(tài)常量池,即*.class文件中的常量池,class文件中的
發(fā)表于 09-27 13:01
?10次下載
![java <b class='flag-5'>常量</b>池靜態(tài)變量詳解](https://file.elecfans.com/web2/M00/49/E0/pYYBAGKhvG6AJziVAAAPRopIRFg225.png)
單片機(jī)的結(jié)構(gòu)體和指針等資料說明
本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)的結(jié)構(gòu)體和指針等資料說明包括了:單片機(jī)的常量,單片機(jī)的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
發(fā)表于 12-05 17:23
?17次下載
![單片機(jī)的結(jié)構(gòu)體和<b class='flag-5'>指針</b>等資料說明](https://file.elecfans.com/web1/M00/B0/94/pIYBAF3ozPCAUdHkAArUptrvV-c112.png)
單片機(jī)的常量和變量與數(shù)組的詳細(xì)資料說明
本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)的常量和變量與數(shù)組的詳細(xì)資料說明包括了:單片機(jī)的常量,單片機(jī)的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
發(fā)表于 12-11 17:36
?13次下載
![單片機(jī)的<b class='flag-5'>常量</b>和變量與數(shù)組的詳細(xì)資料說明](https://file.elecfans.com/web1/M00/B0/BA/o4YBAF3wuEKAPhUxAAxIvNhEW2s074.png)
變量和常量之間的差異
Windows -編程-變量和常量之間的差異 無法更改變量的值可能會讓您想起大多數(shù)其他語言都有的另一個編程概念:常量。與不可變變量一樣,常量是綁定到名稱且不允許更改的值,但常量和變量之
發(fā)表于 10-19 17:24
?836次閱讀
C++中const以及this指針的使用
const 作用 修飾變量,說明該變量不可以被改變; 修飾指針,分為指向常量的指針(pointer to const)和自身是常量的指針(
嵌入式c語言指針指向常量
地址的,原因是字符串為常量,c語言編譯器會對一樣的常量進(jìn)行操作,內(nèi)存中只保留一份copy。ps:c語言中常量是放在.rodata中,.rodata是在.text代碼段中。...
發(fā)表于 11-29 17:51
?12次下載
![嵌入式c語言<b class='flag-5'>指針</b>指向<b class='flag-5'>常量</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
String-MCU內(nèi)存字符串和Flash字符串指針
? 很多時候,MCU受指今影響,訪問Flash和內(nèi)部RAM時的方法不同,所以編譯器在編譯Flash數(shù)據(jù)常量操作和RAM常量操作時的生成的方法也不一樣。同樣若指針指向Falsh區(qū)數(shù)據(jù)或RAM區(qū)數(shù)據(jù)
發(fā)表于 12-02 09:51
?3次下載
![String-MCU內(nèi)存字符串和Flash字符串<b class='flag-5'>指針</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言的常量-2
在C語言中,字符型常量是最特別的一種常量。他的特別之處在于我們需要對其使用指定的定界符對其進(jìn)行限制。定界符為 ‘’ 。字符型常量可以分為兩種,一種是字符常量,另一種是字符串
![C語言的<b class='flag-5'>常量</b>-2](https://file.elecfans.com/web2/M00/92/C6/poYBAGP0ZRyADmSaAAAauKdGrW4934.jpg)
Java中常量基礎(chǔ)知識分享
什么是字面常量?
**2 ****方法**
拿第一行輸出語句來說,這行代碼輸出了 “hello” 這個字符串,無論何時何地運(yùn)行程序,輸出的這個字符串都不會變,這就是字面常量。
定義:常量即程序運(yùn)行期間,固定不變
![Java中<b class='flag-5'>常量</b>基礎(chǔ)知識分享](https://file1.elecfans.com/web2/M00/88/86/wKgaomRrJb2AGFruAAGHl5NZxMw334.jpg)
常量的基本知識和使用示例
常量是具有固定值的數(shù)據(jù),其值在程序運(yùn)行期間不能更改。常量在程序執(zhí)行期間可由各種程序元素讀取,但不能被覆蓋。不同的常量值通常會指定相應(yīng)的表示方式,具體取決于數(shù)據(jù)類型和數(shù)據(jù)格式。類型與非類型表示方式不同。
評論