0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談指針常量和常量指針

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-02-21 09:27 ? 次閱讀
這節(jié)課我們來講一講指針常量和常量指針。
3f196e94-b10e-11ed-bfe3-dac502259ad0.png這兩個的關(guān)系,就跟指針數(shù)組、數(shù)組指針一樣,初學(xué)者,很難分的清。
首先是指針常量。3f6ef8c8-b10e-11ed-bfe3-dac502259ad0.png ?我們聽過整型常量、字符常量、字符串常量。整型常量是個不能修改的整數(shù),字符常量是個不能修改的字符。
那指針常量就很好理解了,是個不能修改的指針。
chararr[] = "helloworld";
char*constp=arr;
比如指針p,因為它被const修飾,所以p不能修改。407d846e-b10e-11ed-bfe3-dac502259ad0.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 ?我們知道整型指針、字符指針。整型指針是指針指向整數(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)載請注明出處。

收藏 人收藏

    評論

    相關(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次下載
    java <b class='flag-5'>常量</b>池靜態(tài)變量詳解

    單片機的結(jié)構(gòu)體和指針等資料說明

    本文檔的主要內(nèi)容詳細介紹的是單片機的結(jié)構(gòu)體和指針等資料說明包括了:單片機的常量,單片機的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
    發(fā)表于 12-05 17:23 ?17次下載
    單片機的結(jié)構(gòu)體和<b class='flag-5'>指針</b>等資料說明

    單片機的常量和變量與數(shù)組的詳細資料說明

    本文檔的主要內(nèi)容詳細介紹的是單片機的常量和變量與數(shù)組的詳細資料說明包括了:單片機的常量,單片機的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
    發(fā)表于 12-11 17:36 ?13次下載
    單片機的<b class='flag-5'>常量</b>和變量與數(shù)組的詳細資料說明

    變量和常量之間的差異

    Windows -編程-變量和常量之間的差異 無法更改變量的值可能會讓您想起大多數(shù)其他語言都有的另一個編程概念:常量。與不可變變量一樣,常量是綁定到名稱且不允許更改的值,但常量和變量之
    發(fā)表于 10-19 17:24 ?714次閱讀

    C++中const以及this指針的使用

    const 作用 修飾變量,說明該變量不可以被改變; 修飾指針,分為指向常量指針(pointer to const)和自身是常量指針
    的頭像 發(fā)表于 09-23 11:39 ?1887次閱讀

    嵌入式c語言指針指向常量

    地址的,原因是字符串為常量,c語言編譯器會對一樣的常量進行操作,內(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>

    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>

    C語言的常量-2

    在C語言中,字符型常量是最特別的一種常量。他的特別之處在于我們需要對其使用指定的定界符對其進行限制。定界符為 ‘’ 。字符型常量可以分為兩種,一種是字符常量,另一種是字符串
    的頭像 發(fā)表于 02-21 15:02 ?529次閱讀
    C語言的<b class='flag-5'>常量</b>-2

    Java中常量基礎(chǔ)知識分享

    什么是字面常量? **2 ****方法** 拿第一行輸出語句來說,這行代碼輸出了 “hello” 這個字符串,無論何時何地運行程序,輸出的這個字符串都不會變,這就是字面常量。 定義:常量即程序運行期間,固定不變
    的頭像 發(fā)表于 05-22 16:21 ?362次閱讀
    Java中<b class='flag-5'>常量</b>基礎(chǔ)知識分享

    常量的基本知識和使用示例

    常量是具有固定值的數(shù)據(jù),其值在程序運行期間不能更改。常量在程序執(zhí)行期間可由各種程序元素讀取,但不能被覆蓋。不同的常量值通常會指定相應(yīng)的表示方式,具體取決于數(shù)據(jù)類型和數(shù)據(jù)格式。類型與非類型表示方式不同。
    的頭像 發(fā)表于 06-14 10:34 ?977次閱讀

    指針是什么

    指針是什么? 1.1 淺談指針 理解指針的 兩個要點: 指針是內(nèi)存中一個最小單元的編號,也就是地址; 平時口語中說的
    的頭像 發(fā)表于 11-24 15:50 ?1761次閱讀
    <b class='flag-5'>指針</b>是什么