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