在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

怎樣去使用C語言中的const關鍵字呢

冬至配餃子 ? 來源:最后一個bug ? 作者:bug菌 ? 2022-08-12 09:13 ? 次閱讀

/***const是什么?***/

C語言中const是一個關鍵字,const字面的意思是“恒定的,不變的”,其主要的作用是const定義的變量,但又相當于常量,其值不允許被改變。

值得注意的是:

1)const修飾的變量的
生存周期為其定義到整個程序結束運行,不管是全局變量還是局部變量。

2)對于const變量在
初始化的時候就需要進行按我們的期望進行賦值,其他時候修改則會造成語法錯誤。

3)對于
const特性跟編譯器相關,不過大部分是一致的!

4)const是在
編譯的時候編譯器進行的一些處理!

/***如何使用const?***/

一、C語言中const修飾的變量占用內存

我們先看加兩個例子:

下圖C語言

pYYBAGL1qK6AQjmdAABt1-vJyvw190.png

下圖C++語言

poYBAGL1qMSAWll7AAB4Amh5CzA508.png

我們編譯會發現C語言無法通過,主要是原因是我們定義const變量n并不是常量所以編譯無法通過。所以用const定義的變量僅僅為只讀變量,同樣需要占用內存。而C++可以通過,而它相對比較復雜,這里不在展開描述!

二、const注釋函數參數和返回值

我們通過修飾函數形參來保護傳入的參數不被意外修改,有利于程序穩定性。我們一般不會用const修飾值傳遞,因為值傳遞是一個賦值的過程,在函數內部修改不會改變其值,所以不是很有意義;一般用const注釋指針傳遞,防止內部修改導致外部變化,比如:void sFuc(const char *des,const char *src);這樣就防止了des和src值的意外修改。

修飾返回值一般用得比較少,采用const修飾返回值一般也不用于值傳遞,而是多用于指針傳遞!


三、const變量能通過指針修改嗎?

我們通過下面兩個例子:

pYYBAGL1qOGASIW4AAExAvqRXnQ540.png

我們會發現兩者的區別const一個注釋的全局變量一個注釋的局部變量,我們編譯都能通過,不過使用全部變量的程序運行會報段錯誤,而局部變量的能夠過得正確結果。對于通過指針修改const的值是一種與編譯器有關的行為,我們認為可以用指針修改堆棧上的局部變量,而全部變量const修飾以后為只讀區域,如果程序訪問則會導致異常!

四、const注釋指針的終極奧義

我們把const處把右側的語句括起來,去掉數據類型,括起來的內容是什么就是什么不能被修改。

如:

1)const int *pVar=&addr;根據上面的方法括起來的內容(* pVar)表示的是指針的內容,那么不能執行*pVar內容的修改,比如說*pVar=123;則編譯會報錯。不過可以修改指針的地址,比如pVar = &addr2;這樣是可以修改的并且我們再次訪問pVar的內容則變成了addr2的內容了。

2)同樣intconst *pVar=&addr;跟上面是一樣的處理辦法。

3)int* const pVar=&addr;這個剛剛與前面的相反,其括起來的為(pVar)所以值能使用*pVar作為左值,不能修改pVar所指向的地址。

4)對于constint* constpVar=&addr則都不可進行修改!只能作為右值可讀。

5)我們同樣可以擴展下對于二級指針

constchar*const*constp全部限定為只讀,都不可以改寫,如果一個開放對應的就可以被修改!


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5082

    文章

    19126

    瀏覽量

    305255
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136843
  • 編譯器
    +關注

    關注

    1

    文章

    1634

    瀏覽量

    49133
收藏 人收藏

    評論

    相關推薦

    C語言關鍵字分別發生在哪個階段

    在編譯的第一個階段:預處理,對一些宏定義做替換。 第二個,const。 C語言中const 用于修飾只讀變量,表示變量本身不能修改。 這個關鍵字
    的頭像 發表于 11-24 10:31 ?182次閱讀

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用socket,程序可以發送和接收數據,實現不同計算機之間的通信
    的頭像 發表于 11-01 16:51 ?325次閱讀

    C語言關鍵字--typedef

    C語言關鍵字使用方法學習指南!
    的頭像 發表于 10-07 12:44 ?265次閱讀

    使用邊緣AI和Sitara處理器進行關鍵字檢測

    電子發燒友網站提供《使用邊緣AI和Sitara處理器進行關鍵字檢測.pdf》資料免費下載
    發表于 09-02 11:30 ?0次下載
    使用邊緣AI和Sitara處理器進行<b class='flag-5'>關鍵字</b>檢測

    c語言中從左到右結合怎么看

    C語言中,操作符的結合性(Associativity)是指當操作符在表達式中連續出現時,它們如何與操作數結合的順序。對于大多數二元操作符(即需要兩個操作數的操作符),C語言遵循兩種基
    的頭像 發表于 08-20 11:42 ?887次閱讀

    typedef struct和直接struct的區別

    C語言中, typedef 和 struct 是兩種不同的關鍵字,它們在定義和使用上有著明顯的區別。 typedef struct 和直接 struct 在 C
    的頭像 發表于 08-20 10:58 ?2779次閱讀

    鴻蒙原生應用元服務開發-倉頡基本概念標識符

    在倉頡編程語言中,開發者可以給一些程序元素命名,這些名字也被稱為“標識符”,標識符分為普通標識符和原始標識符兩類,它們分別遵從不同的命名規則。 普通標識符不能和倉頡關鍵字相同,可以取自以下兩類字符
    發表于 08-06 17:37

    快速掌握C語言關鍵字

    C語言中的32個關鍵字你知道多少個?根據關鍵字的作用分為四類:數據類型關鍵字、控制語句
    的頭像 發表于 07-06 08:04 ?351次閱讀
    快速掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>關鍵字</b>

    嵌入式中C語言結構體基本實現

    C語言中的數組只能允許程序員定義存儲相同類型數據。但是結構是C語言編程中允許您存儲不同數據類型的數據。 結構體的定義 ????要想定義結構,必須用到 struct
    的頭像 發表于 05-11 08:49 ?1040次閱讀
    嵌入式中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結構體基本實現

    C語言中的typedef的應用

    C 語言提供了 typedef 關鍵字,您可以使用它來為類型取一個新的名字。下面的實例為單字節數字定義了一個術語 BYTE。
    發表于 03-06 11:34 ?387次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的typedef的應用

    嵌入式C語言面試大挑戰

    C++中static關鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態數據成員和靜態成員方法靜態數據成員
    發表于 03-05 14:18 ?355次閱讀
    嵌入式<b class='flag-5'>C</b><b class='flag-5'>語言</b>面試大挑戰

    介紹C語言中錯誤處理和異常處理的一些常用的方法和策略

    C語言是一種低級的、靜態的、結構化的編程語言,它沒有提供像C++或Java等高級語言中的異常處理機制,例如try-catch-finally
    的頭像 發表于 02-28 14:25 ?621次閱讀

    關鍵字搜索文件夾中某個TXT文件

    文件夾中隨時創造TXT文件,如何及時選出剛創造的文件?或關鍵字搜索出需要的TXT文件?
    發表于 02-06 15:22

    在NVM和本地\"內存中定義數組(靜態 /global /local)的\"關鍵字是什么?

    在 NVM 和本地\"內存中定義數組(靜態 /global /local)的\"關鍵字是什么? 還有與 32 位對齊的關鍵字怎么樣。
    發表于 01-25 07:52

    如何解決C語言中的“訪問權限沖突”異常?C語言引發異常原因分析

    如何解決C語言中的“訪問權限沖突”異常?C語言引發異常原因分析? 在C語言中,訪問權限沖突異常通
    的頭像 發表于 01-12 16:03 ?5724次閱讀
    主站蜘蛛池模板: 久久精品亚洲一级毛片| 国内真实下药迷j在线观看| 在线免费观看一区二区三区| 综合色吧| 欧美日韩亚洲国产| 天天天天做夜夜夜做| 亚洲综合激情另类专区| 日本在线视频精品| 精品国产综合区久久久久99| 日本黄色小说视频| 色噜噜噜噜噜在线观看网站| 欧美色性视频| 人人干人人玩| 一级待一黄aaa大片在线还看| 久久精品视频99精品视频150| 免费福利午夜影视网| 在线免费观看色视频| 国产一级特黄一级毛片| 国产高清一级视频在线观看| 亚洲成人网在线观看| a欧美在线| 4438x全国免费| 欧美成人午夜精品一区二区| 日本久草网| 一级做性色a爱片久久片| 国产玖玖| ass日本69| 香港澳门a级三级三级全黄| 丁香花成人另类小说| h在线视频| 久青草国产免费观看| 97久草| 色日本视频| 免费一级牲交毛片| 五月伊人婷婷| 天天干夜夜操美女| 亚洲色图综合网站| 久久久久久综合| 777奇米四色米奇影院在线播放| 三级理论在线观看| 免费鲁丝片一级观看|