吴忠躺衫网络科技有限公司

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

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

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

C語言里的鐵布衫——const

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:胡薇 ? 2018-06-11 16:26 ? 次閱讀

相傳在C的世界里出現(xiàn)了一件極品裝備(鐵布衫)const、它的出現(xiàn),讓天下的所有刺客和黑客都聞風(fēng)喪膽,在它的保護(hù)下,所有的變量都可以保存的完好無損const是constant的縮寫,表示海枯石爛、恒定不變、一旦相伴、永不變心。只要一個變量前面用const來修飾,就意味著該變量的數(shù)據(jù)可以被訪問,不能被修改。其實(shí)我們還可以叫它readonly.

雖然理解起const來相對比較容易理解,但是const不僅僅可以用來修辭基本類型,它還可以經(jīng)常用來修辭一些構(gòu)造類型和指針及其參合體,如數(shù)組、指針、指針數(shù)組、結(jié)構(gòu)體數(shù)組、結(jié)構(gòu)體指針數(shù)組一旦和這些復(fù)雜的類型結(jié)合起來還是有一定的迷惑性的.

例如:

(1) const int a = 10;

(2) int const a = 10;

(3) const int a[10] = {1,2,3, 4, 5, 6, 7, 8, 9, 10};

(4) const int *p;

(5) int * const p;

(6) const struct devices dev[5];

(7) struct devices const * dev[5];

看到上面的例子,我相信很多人都會倒吸一口冷氣。話不多說直接看辨識技巧

將類型去掉;

看const修飾誰,誰就擁有鐵布衫,誰的值就不能被修改,是readonly(1)去掉類型 int 變成“const a = 10”,a 擁有了鐵布衫,a的值是不變的(2)去掉類型 int 變成“const a = 10”,a 擁有了鐵布衫,a的值是不變的,這兩個的效果一樣(3)去掉類型 int 變成“const a[10]”, a[10]擁有了鐵布衫,a數(shù)組里面的值是不變的(4)去掉類型 int 變成“const *p”,*p擁有鐵布衫,p所指的空間里面的值是不變的(5) 去掉類型 int * 變成 “const p”,指針變量p擁有了鐵布衫,指針變量p的值不變,也就是說p不能再指向其他地址了,但是p所指向的空間的值可變(6)去掉類型struct devices變成“const dev[5]”,dev[5]擁有了鐵布衫,dev[5]數(shù)組的值不變(7)這是一個devices結(jié)構(gòu)體類型的指針數(shù)組,它擁有5個devices結(jié)構(gòu)體類型的指針,每個指針指向一個devices結(jié)構(gòu)體,const修飾*dev[5],去掉類型struct devices變成“const *dev[5]”,指針數(shù)組*dev[5]擁有了鐵布衫,指針數(shù)組dev中每個元素指向的空間里的值不變。

作用總結(jié):

首先、const關(guān)鍵字修飾變量名的時候,把這個變量變?yōu)槭且粋€只讀變量,這里的只讀不是全局?jǐn)?shù)據(jù)區(qū)的or段。它所修飾的變量原來是在哪個區(qū)域,const修飾之后它還在那個區(qū)域。比如修飾一個局部變量const int num = 5;那么這個局部變量還是存在棧空間上。它本身對應(yīng)的內(nèi)存空間還是可以變的。但是不可以通過num去修改它。如果定義一個指針指向num的地址。則可以改變num的值。其次、const可以修飾形參(保護(hù)形參不被修改),在這一點(diǎn)上,站在實(shí)現(xiàn)者的角度,const可以防止函數(shù)對實(shí)參修改帶來的問題。站在調(diào)用者的角度來說,它對于實(shí)參只能訪問,不能修改。所以、合理地使用關(guān)鍵字const可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現(xiàn)。

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

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137726
  • CONST
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    8187

原文標(biāo)題:在C的世界里出現(xiàn)了一件極品裝備(鐵布衫)const

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言關(guān)鍵字const的幾種用法

    本期來講解一個C語言的關(guān)鍵字——const
    發(fā)表于 06-21 11:05 ?1717次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>關(guān)鍵字<b class='flag-5'>const</b>的幾種用法

    C語言const關(guān)鍵字的用法

    const是constant的簡寫,用來定義常量,如果一個變量被const修飾,那么它的值就不能再被改變。
    發(fā)表于 06-29 09:51 ?494次閱讀

    C語言之正確使用Const

    C語言之正確使用Const基本解釋  const是一個C語言的關(guān)鍵字,它限定一個變量不允許被改變
    發(fā)表于 10-07 11:20

    C語言——正確使用const

    C語言——正確使用const基本解釋   const是一個C語言的關(guān)鍵字,它限定一個變量不允許被
    發(fā)表于 04-23 11:58

    C語言布衫——const

    相傳在C的世界出現(xiàn)了一件極品裝備(布衫const、它的出現(xiàn),讓天下的所有刺客和黑客都聞風(fēng)喪膽,在它的保護(hù)下,所有的變量都可以保存的完好
    發(fā)表于 06-11 08:28

    【每日一知識點(diǎn)】C語言const詳解

    本帖最后由 張飛電子學(xué)院蔡琰 于 2021-3-29 11:01 編輯 C語言const關(guān)鍵字是constant的縮寫,是恒定不變的意思。通常翻譯為常量、常數(shù)等,我們一看到const
    發(fā)表于 03-29 10:53

    筆記本的布衫

    筆記本的布衫 在盡情地享受高科技數(shù)碼產(chǎn)品給我們工作和生活帶來的便利和樂趣的今天,你是否曾為你身軀嬌小的PSP被刮傷而心疼好幾天,你
    發(fā)表于 01-20 14:32 ?478次閱讀

    請問C語言strcpy具體怎么使用

    標(biāo)準(zhǔn)庫的string類提供了3個成員函數(shù)來從一個string得到c類型的字符數(shù)組:c_str()、data()、copy(p,n)。這是C語言里面復(fù)制字符串的庫函數(shù), 函數(shù)聲明包括在專
    發(fā)表于 11-29 08:54 ?1.1w次閱讀

    C語言生成的段和CMD文件

    本章講述COFF格式、C語言生成的段、CMD文件和復(fù)雜的.const段。
    發(fā)表于 04-12 16:37 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>生成的段和CMD文件

    C++與Cconst關(guān)鍵字有何差別?

    C++與C中的const關(guān)鍵字有何差別?
    的頭像 發(fā)表于 02-03 14:51 ?1856次閱讀

    C語言const和volatile的深度學(xué)習(xí)

    關(guān)于const的用法,現(xiàn)在大概前前后后應(yīng)該寫了有兩篇文章,以前學(xué)習(xí)的時候,用法體會不是那么深刻,為啥這么說呢,因?yàn)樵趯W(xué)習(xí)c++的時候,會發(fā)現(xiàn)const關(guān)鍵字有新的玩法,關(guān)于這個新的玩法,大家可以去看最近學(xué)習(xí)總結(jié)寫的
    的頭像 發(fā)表于 12-24 16:13 ?716次閱讀

    constC語言C++中的區(qū)別與使用!

    const修飾的全局變量不能以地址的形式進(jìn)行修改,由于它在內(nèi)存中位于常量區(qū),他的地址空間是只讀的。在C語言中被const的變量是直接被分配內(nèi)存的。
    的頭像 發(fā)表于 04-24 16:08 ?1421次閱讀

    C語言const的用法介紹

    C語言標(biāo)準(zhǔn)庫中很多函數(shù)的參數(shù)都被 const 限制了,但我們在以前的編碼過程中并沒有注意這個問題,經(jīng)常將非 const 類型的數(shù)據(jù)傳遞給 const
    發(fā)表于 01-05 10:03 ?587次閱讀

    C語言const關(guān)鍵字詳解

    const我平時沒咋用過,最近在一份代碼中配置外設(shè)寄存器值的數(shù)組定義上看到用了這個,因此進(jìn)行一下簡單的入門學(xué)習(xí)。在本文最后1點(diǎn)給出const在配置外設(shè)初始默認(rèn)寄存器的用法。
    的頭像 發(fā)表于 04-15 15:47 ?719次閱讀

    C語言|const關(guān)鍵字介紹

    最近看別人的項(xiàng)目, 發(fā)現(xiàn)const使用比較多, 通過使用const來保護(hù)變量, 這篇推文就來簡單回顧一下相關(guān)知識!
    的頭像 發(fā)表于 05-25 15:11 ?572次閱讀
    百家乐官网赌博代理合作| 做生意风水 门对门| 百家乐官网有赢钱公式吗| 玩百家乐如何看路| 大发888188| 百家乐官网5式直缆投注法| 什么百家乐平注法| 大发888官网游| 百家乐官网两边| 玩百家乐出千方法| 百家乐官网网址多少| 百家乐赢赌场百家乐| 太阳城娱乐| 百家乐官网扑| 大发888官方网站登录| 任我赢百家乐官网软件中国有限公司| 百家乐赌场信息| 百家乐官网长玩必输| A8百家乐娱乐城| 立即博最新网址| 做生意属虎的朝向| 亿酷棋牌室| 百家乐官网网址官网| 永盈会娱乐场官网| 免费百家乐官网预测| 上游棋牌下载| 凯斯网百家乐官网的玩法技巧和规则| 德州扑克术语| 休闲百家乐官网的玩法技巧和规则| 大发888游戏黄金之旅| 百家乐官网网络娱乐场开户注册| 大发888我爱好| 百家乐官网单注打法| 大发888信誉888娱乐城| 赌百家乐官网可以赢钱| 威尼斯人娱乐城是波音| 电子百家乐官网技巧| 大发888客服电话| 百家乐庄闲规则| 百家乐官网网投开户| 正品百家乐的玩法技巧和规则|