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

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

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

C語言里的鐵布衫——const

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

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

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

例如:

(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結構體類型的指針數(shù)組,它擁有5個devices結構體類型的指針,每個指針指向一個devices結構體,const修飾*dev[5],去掉類型struct devices變成“const *dev[5]”,指針數(shù)組*dev[5]擁有了鐵布衫,指針數(shù)組dev中每個元素指向的空間里的值不變。

作用總結:

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

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

    關注

    180

    文章

    7605

    瀏覽量

    136936
  • CONST
    +關注

    關注

    0

    文章

    44

    瀏覽量

    8173

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

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

收藏 人收藏

    評論

    相關推薦

    C語言關鍵字const的幾種用法

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

    C語言const關鍵字的用法

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

    C語言之正確使用Const

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

    C語言——正確使用const

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

    C語言布衫——const

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

    【每日一知識點】C語言const詳解

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

    筆記本的布衫

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

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

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

    C語言生成的段和CMD文件

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

    C++與Cconst關鍵字有何差別?

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

    C語言const和volatile的深度學習

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

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

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

    C語言const的用法介紹

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

    C語言const關鍵字詳解

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

    C語言|const關鍵字介紹

    最近看別人的項目, 發(fā)現(xiàn)const使用比較多, 通過使用const來保護變量, 這篇推文就來簡單回顧一下相關知識!
    的頭像 發(fā)表于 05-25 15:11 ?542次閱讀