91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

怎樣去使用C語言中的const關(guān)鍵字呢

冬至配餃子 ? 來源:最后一個bug ? 作者:bug菌 ? 2022-08-12 09:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

值得注意的是:

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

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

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

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

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

一、C語言中const修飾的變量占用內(nèi)存

我們先看加兩個例子:

下圖C語言

pYYBAGL1qK6AQjmdAABt1-vJyvw190.png

下圖C++語言

poYBAGL1qMSAWll7AAB4Amh5CzA508.png

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

二、const注釋函數(shù)參數(shù)和返回值

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

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


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

我們通過下面兩個例子:

pYYBAGL1qOGASIW4AAExAvqRXnQ540.png

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

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

我們把const處把右側(cè)的語句括起來,去掉數(shù)據(jù)類型,括起來的內(nèi)容是什么就是什么不能被修改。

如:

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

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

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

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

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

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


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20444

    瀏覽量

    333993
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145575
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51598
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    C語言嵌入式系統(tǒng)編程注意事項-內(nèi)存操作

    的輸出參數(shù)。 (2)合理地使用關(guān)鍵字const可以使編譯器很自然地保護(hù)那些不**被改變的參數(shù),防止其被無意的代碼修改,這樣可以減少bug的出現(xiàn)。 constC++
    發(fā)表于 01-04 07:31

    單片機(jī)c語言中定義字節(jié)怎么定義?

    定義位可以用***it但是定義字節(jié)?還有就是比如匯編中的DPTR的DPH和DPL在c語言中怎樣定義的?
    發(fā)表于 12-29 06:32

    C語言C++的區(qū)別及聯(lián)系

    缺點:性能比面向過程低。 二、具體語言上的區(qū)別 1、關(guān)鍵字的不同 C語言有32個關(guān)鍵字;C
    發(fā)表于 12-24 07:23

    關(guān)鍵字volatile的含意

    關(guān)鍵字volatile有什么含意? 一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設(shè)這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必須每次都小心
    發(fā)表于 12-23 06:33

    Typedef在C語言中的應(yīng)用

    Typedef 在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義。也可以用預(yù)處理器做類似的事。例如,思考一下下面的例子: #define dPS struct s * typedef
    發(fā)表于 12-22 13:53

    interrupt關(guān)鍵字使用

    中斷是嵌入式系統(tǒng)中重要的組成部分,這導(dǎo)致了很多編譯開發(fā)商提供一種擴(kuò)展—讓標(biāo)準(zhǔn)C支持中斷。具代表事實是,產(chǎn)生了一個新的關(guān)鍵字__interrupt。下面的代碼就使用了__interrupt關(guān)鍵字
    發(fā)表于 12-22 09:36

    C語言中可以嵌套匯編語言嗎?

    請問C語言中可以嵌套匯編語言嗎?
    發(fā)表于 12-15 08:14

    Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用及接口請求示例

    Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用及接口請求示例 Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用場景 Temu跨境電商平臺按關(guān)鍵字搜索Temu商品API的主要應(yīng)用場景包括但不
    的頭像 發(fā)表于 11-29 15:08 ?451次閱讀

    C語言的編程技巧

    、_Alignas關(guān)鍵字?:C11標(biāo)準(zhǔn)引入了_Alignas關(guān)鍵字,用于顯式指定類型的對齊方式,優(yōu)化內(nèi)存訪問效率。 ?5、_Generic關(guān)鍵字?:
    發(fā)表于 11-27 06:46

    哪些場合會用到volatile關(guān)鍵字?

    當(dāng)你理解 volatile關(guān)鍵字的含義之后,你就能明白,其實很多場合都能用到 volatile關(guān)鍵字。 1.全局變量單片機(jī)開發(fā),難免會用到全局變量。一些初級工程師,更是全局變量滿天飛。這種情況下
    發(fā)表于 11-25 08:19

    天眼查平臺關(guān)鍵字搜索企業(yè)數(shù)據(jù)API接口技術(shù)指南

    ? 一、接口概述 天眼查提供的企業(yè)搜索API接口,支持通過關(guān)鍵字查詢企業(yè)工商信息、經(jīng)營狀態(tài)等核心數(shù)據(jù)。該接口采用RESTful架構(gòu),返回JSON格式數(shù)據(jù)。 二、接口認(rèn)證 調(diào)用需使用API密鑰認(rèn)證
    的頭像 發(fā)表于 11-21 11:48 ?700次閱讀
    天眼查平臺<b class='flag-5'>關(guān)鍵字</b>搜索企業(yè)數(shù)據(jù)API接口技術(shù)指南

    亞馬遜平臺根據(jù)關(guān)鍵字搜索商品API接口

    ? ?在電商開發(fā)中,集成亞馬遜平臺的商品搜索功能是常見需求。通過亞馬遜的Product Advertising API(PAAPI),開發(fā)者可以根據(jù)關(guān)鍵字高效檢索商品信息。本技術(shù)帖將逐步介紹如何調(diào)用
    的頭像 發(fā)表于 11-05 15:00 ?360次閱讀
    亞馬遜平臺根據(jù)<b class='flag-5'>關(guān)鍵字</b>搜索商品API接口

    micro 關(guān)鍵字搜索全覆蓋商品,并通過 API 接口提供實時數(shù)據(jù)

    micro 關(guān)鍵字搜索全覆蓋商品”并通過 API 接口提供實時數(shù)據(jù)
    的頭像 發(fā)表于 07-13 10:13 ?877次閱讀

    單片機(jī)編程關(guān)鍵字之volatile

    它的存在。也有很多人知道它的存在,根本沒用過,我對它有種“楊家有女初長成, 養(yǎng)在深閨無人識”的感覺volatile 關(guān)鍵字到底是什么意思,怎么用1、volat
    發(fā)表于 04-02 13:47 ?2次下載

    帶你在單片機(jī)編程中熟練使用const(可下載)

    C 語言關(guān)鍵字const 舉足輕重,我們今天就深度聊一聊 const 的定義和實際應(yīng)用,讓它 不再是迷
    發(fā)表于 04-01 14:18 ?3次下載