這節(jié)課我們來講一講指針常量和常量指針。
這兩個的關(guān)系,就跟指針數(shù)組、數(shù)組指針一樣,初學(xué)者,很難分的清。
首先是指針常量。 ?我們聽過整型常量、字符常量、字符串常量。整型常量是個不能修改的整數(shù),字符常量是個不能修改的字符。
那指針常量就很好理解了,是個不能修改的指針。
它只能指向字符 'h',如果強行進行p++操作,編譯的時候就會報錯。
我們稱指針p為指針常量。
其實在C語言中,說他是常量不合適,只讀變量更合適,就是可以通過其他方式讓p指向字符 'e'。
接下來是常量指針。 ?我們知道整型指針、字符指針。整型指針是指針指向整數(shù),字符指針是指針指向字符,那常量指針就很好理解了,指針指向常量。
如果你想通過p去修改字符串的值,那絕對是不可以的,比如:
總結(jié)一些,指針常量是指針本身不能修改,常量指針是指針指向的內(nèi)容不能修改。
這兩個的關(guān)系,就跟指針數(shù)組、數(shù)組指針一樣,初學(xué)者,很難分的清。
首先是指針常量。 ?我們聽過整型常量、字符常量、字符串常量。整型常量是個不能修改的整數(shù),字符常量是個不能修改的字符。
那指針常量就很好理解了,是個不能修改的指針。
chararr[] = "helloworld";
char*constp=arr;
比如指針p,因為它被const修飾,所以p不能修改。它只能指向字符 'h',如果強行進行p++操作,編譯的時候就會報錯。
我們稱指針p為指針常量。
其實在C語言中,說他是常量不合適,只讀變量更合適,就是可以通過其他方式讓p指向字符 'e'。
char str[] = "helloworld";
char*constp=str;
char **q = (char **)&p;
(*q)++;
以上代碼,可以讓指針 p 指向字符'e'。接下來是常量指針。 ?我們知道整型指針、字符指針。整型指針是指針指向整數(shù),字符指針是指針指向字符,那常量指針就很好理解了,指針指向常量。
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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7575瀏覽量
134041 -
字符
+關(guān)注
關(guān)注
0文章
230瀏覽量
25106 -
字符串
+關(guān)注
關(guān)注
1文章
566瀏覽量
20384 -
指針
+關(guān)注
關(guān)注
1文章
475瀏覽量
70457 -
數(shù)組
+關(guān)注
關(guān)注
1文章
411瀏覽量
25821
原文標(biāo)題:指針常量和常量指針
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
Go語言常量的聲明
在 Go 語言中, 常量 表示的是固定的值,常量表達式的值在編譯期進行計算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的數(shù)據(jù)類型只可以是
發(fā)表于 07-20 15:24
?359次閱讀
指針到底能不能修改其指向的常量字符串?
1.指針到底能不能修改其指向的常量字符串?今天做一個字符串右移函數(shù)時,直接使用指針來修改字符串常量的值出現(xiàn)了奇怪運行時錯誤。代碼如下:[tr=transparent]#include&
發(fā)表于 03-14 17:03
嵌入式c語言指針指向常量相關(guān)資料分享
地址的,原因是字符串為常量,c語言編譯器會對一樣的常量進行操作,內(nèi)存中只保留一份copy。ps:c語言中常量是放在.rodata中,.rodata是在.text代碼段中。...
發(fā)表于 01-24 06:32
函數(shù)指針常量和函數(shù)指針變量分清楚了嗎
有三點收獲1. 將一個有static 靜態(tài)變量的函數(shù)變成了一個可重入的函數(shù)2. 函數(shù)指針常量 和 函數(shù)指針變量分清楚了3. 通過實例了解到了什么時候需要定時回調(diào)函數(shù)傳入?yún)?shù)
發(fā)表于 02-28 06:22
java 常量池靜態(tài)變量詳解
Java中的常量池,實際上分為兩種形態(tài):靜態(tài)常量池和運行時常量池。 所謂靜態(tài)常量池,即*.class文件中的常量池,class文件中的
發(fā)表于 09-27 13:01
?10次下載
單片機的結(jié)構(gòu)體和指針等資料說明
本文檔的主要內(nèi)容詳細介紹的是單片機的結(jié)構(gòu)體和指針等資料說明包括了:單片機的常量,單片機的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
發(fā)表于 12-05 17:23
?17次下載
單片機的常量和變量與數(shù)組的詳細資料說明
本文檔的主要內(nèi)容詳細介紹的是單片機的常量和變量與數(shù)組的詳細資料說明包括了:單片機的常量,單片機的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
發(fā)表于 12-11 17:36
?13次下載
變量和常量之間的差異
Windows -編程-變量和常量之間的差異 無法更改變量的值可能會讓您想起大多數(shù)其他語言都有的另一個編程概念:常量。與不可變變量一樣,常量是綁定到名稱且不允許更改的值,但常量和變量之
發(fā)表于 10-19 17:24
?714次閱讀
C++中const以及this指針的使用
const 作用 修飾變量,說明該變量不可以被改變; 修飾指針,分為指向常量的指針(pointer to const)和自身是常量的指針(
嵌入式c語言指針指向常量
地址的,原因是字符串為常量,c語言編譯器會對一樣的常量進行操作,內(nèi)存中只保留一份copy。ps:c語言中常量是放在.rodata中,.rodata是在.text代碼段中。...
發(fā)表于 11-29 17:51
?12次下載
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次下載
Java中常量基礎(chǔ)知識分享
什么是字面常量?
**2 ****方法**
拿第一行輸出語句來說,這行代碼輸出了 “hello” 這個字符串,無論何時何地運行程序,輸出的這個字符串都不會變,這就是字面常量。
定義:常量即程序運行期間,固定不變
常量的基本知識和使用示例
常量是具有固定值的數(shù)據(jù),其值在程序運行期間不能更改。常量在程序執(zhí)行期間可由各種程序元素讀取,但不能被覆蓋。不同的常量值通常會指定相應(yīng)的表示方式,具體取決于數(shù)據(jù)類型和數(shù)據(jù)格式。類型與非類型表示方式不同。
評論