chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領取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

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

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

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

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


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

我們通過下面兩個例子:

pYYBAGL1qOGASIW4AAExAvqRXnQ540.png

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

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

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

如:

1)const int *pVar=&addr;根據上面的方法括起來的內容(* pVar)表示的是指針的內容,那么不能執(zhí)行*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全部限定為只讀,都不可以改寫,如果一個開放對應的就可以被修改!


審核編輯:劉清

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

    關注

    5177

    文章

    19997

    瀏覽量

    325268
  • C語言
    +關注

    關注

    183

    文章

    7634

    瀏覽量

    144116
  • 編譯器
    +關注

    關注

    1

    文章

    1665

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    亞馬遜 SP-API 深度開發(fā):關鍵字搜索接口的購物意圖挖掘與合規(guī)競品分析

    本文深度解析亞馬遜SP-API關鍵字搜索接口的合規(guī)調用與商業(yè)應用,涵蓋意圖識別、競品分析、性能優(yōu)化全鏈路。通過COSMO算法解析用戶購物意圖,結合合規(guī)技術方案提升關鍵詞轉化率,助力賣家實現數據驅動決策,安全高效優(yōu)化運營。
    的頭像 發(fā)表于 10-17 14:59 ?174次閱讀

    阿里巴巴國際站關鍵字搜索 API 實戰(zhàn):從多條件篩選到商品列表高效獲客

    ??在跨境電商數據采集場景中,通過關鍵字精準搜索商品列表是基礎且核心的需求。本文將聚焦阿里巴巴國際站的關鍵字搜索接口,詳細介紹如何構建多條件搜索請求、處理分頁數據、解析商品列表信息,并提供可直接復用的 Python 實現方案,幫助開發(fā)者快速搭建穩(wěn)定高效的商品搜索功能。
    的頭像 發(fā)表于 08-20 09:22 ?486次閱讀
    阿里巴巴國際站<b class='flag-5'>關鍵字</b>搜索 API 實戰(zhàn):從多條件篩選到商品列表高效獲客

    micro 關鍵字搜索全覆蓋商品,并通過 API 接口提供實時數據

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

    Windows環(huán)境下32位匯編語言中文資料

    電子發(fā)燒友網站提供《Windows環(huán)境下32位匯編語言中文資料.rar》資料免費下載
    發(fā)表于 06-30 15:14 ?0次下載

    《ESP32S3 Arduino開發(fā)指南》第三章 C/C++語言基礎

    boolean類型。它的值只有兩個:false(假)和true(真)。Boolean類型會占用1節(jié)的內存空間。3.2 運算符 C/C++語言中有多種類型的運算符,常見運算符如表3.2
    發(fā)表于 06-10 09:20

    深入理解C語言C語言循環(huán)控制

    改變程序的執(zhí)行流程,使代碼更加靈活和可控。本文將詳細介紹這些語句的作用及其應用場景,并通過示例代碼進行說明。Part.1break語句C語言中break語句有兩種
    的頭像 發(fā)表于 04-29 18:49 ?1543次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制

    static在單片機中的妙用

    不要從字面意思誤以為關鍵字 static 很安靜,其實它一點都不安靜。這個關鍵字C 語言里主要有兩個作用,下面我們就來介紹一下 C
    發(fā)表于 04-02 13:50 ?1次下載

    單片機編程關鍵字之volatile

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

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

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

    const定義的是不是常量

    C語言是如何定義常量的?const定義的算不算是常量? 常見的有這么幾種方式。 首先就是宏定義,使用 define 來定義。 宏的特點就是在預處理的時候被替換,比如這個地方的 SIZE,預處理后就會
    的頭像 發(fā)表于 01-14 11:35 ?571次閱讀

    EE-62:在C語言中訪問短內存

    電子發(fā)燒友網站提供《EE-62:在C語言中訪問短內存.pdf》資料免費下載
    發(fā)表于 01-07 14:02 ?0次下載
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>語言中</b>訪問短<b class='flag-5'>字</b>內存

    EE-128:C語言中的DSP:從C調用匯編類成員函數

    電子發(fā)燒友網站提供《EE-128:C語言中的DSP:從C調用匯編類成員函數.pdf》資料免費下載
    發(fā)表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的DSP:從<b class='flag-5'>C</b>調用匯編類成員函數

    C語言中申請的堆內存能不能自動釋放

    C語言中申請的堆內存能不能自動釋放?每次都要手動 free 太麻煩,也容易忘記。 學過 C++ 的同學,應該首先能想到智能指針。 但是這是C語言
    的頭像 發(fā)表于 11-27 09:33 ?736次閱讀

    C語言關鍵字分別發(fā)生在哪個階段

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

    C語言中的socket編程基礎

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