那曲檬骨新材料有限公司

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

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

3天內不再提示

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

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2022-04-24 16:08 ? 次閱讀

簡單的const關鍵字里面的學問還是挺大的,越是基礎的知識越是容易忘卻。

a1e3ed36-c39f-11ec-bce3-dac502259ad0.jpg

1.在c語言中const

在C語言中 const關鍵字用來修飾變量名為只讀,僅此而已。

也就是說通過變量名不可以修改它的值,但是可以通過得到它的地址來修改他的值。

#include《stdio.h》int main(){

const int a = 10;

int *p = (int *)&a;

*p = 20;

printf(“a = %d

”,a);

return 0;}

同時被const修飾的全局變量也就是外連接,其他源文件要引用只需要加上extern即可。

被const修飾的全局變量不能以地址的形式進行修改,由于它在內存中位于常量區(qū),他的地址空間是只讀的。在C語言中被const的變量是直接被分配內存的。

a1fb1858-c39f-11ec-bce3-dac502259ad0.png

2.c++中的const

2.1 c++中const的使用

c++中 const關鍵字被用來表示常量,和#define的作用一樣。

在C++中能否通過地址來改變它的值,取決于是否給他分配了內存。主要分以下三中情況

1、const int a = 10;

這種情況是不分配內存的,直接被寫在符號表中,即使后面被分配了內存,那么a的值也不會被改變,輸出的值一直都是符號表中的值

``` #include《iostream》 int main(){

const int a = 10;

std::cout 《《 “original a =” 《《 a 《《 std::endl;

int *p = (int *)&a;

*p = 200;

std::cout 《《 “*p =” 《《 *p 《《 std::endl;

std::cout 《《 “l(fā)ast a =” 《《 a 《《 std::endl;

return 0; } ```

測試結果如下圖所示:

a20ac99c-c39f-11ec-bce3-dac502259ad0.png

2、int b =100;

const int a = b;

3、const person per ={"name","id"}

2和3這種情況都是直接分配內存的,并不會被寫在符號表中,它的值是可以通過地址訪問的方式來改變的。

2.2 c++中const的使用建議

在c++中盡量將宏定義#define 替換為 const

由于#define在編譯的預處理階段就替換為相對應的常量,假如 #define Max 1024; 那么我們在由于這發(fā)生錯誤,他只會提示1024出現錯誤,

而我們換成const int Max = 1024;系統(tǒng)就會提示我們這一行發(fā)生了錯誤,并且定義到相對應的行。

2.3 常量指針與指針常量的區(qū)別

這一題目都是面試中好多公司愿意問的問題,剛好學習到這,就把這塊也納入到本章節(jié)中。

指針常量

int *const p;,顧名思義它是一個常量,只不過被指針修飾。

int a = 10, b =20;int *const p = &a;

p = &b; //×*p = 30; //√

常量指針

const int *p;p是一個常量

int a = 10, b =20;int *const p = &a;

p = &b; //√*p = 30; //×

審核編輯 :李倩

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

    關注

    180

    文章

    7614

    瀏覽量

    137732
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73859
  • CONST
    +關注

    關注

    0

    文章

    45

    瀏覽量

    8187

原文標題:知識分享:const 在C語言與C++中的區(qū)別與使用!

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Spire.XLS for C++組件說明

    Spire.XLS for C++ 是一款專業(yè)的 C++ Excel 組件,可以用在各種 C++ 框架和應用程序。Spire.XLS for C+
    的頭像 發(fā)表于 01-14 09:40 ?150次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    AKI跨語言調用庫神助攻C/C++代碼遷移至HarmonyOS NEXT

    產品創(chuàng)新與功能迭代,而非技術遷移的細節(jié)問題,大幅提升開發(fā)效率。 據悉,涉及C/C++/ETS跨越語言調用的鴻蒙化應用,有超過80%的項目
    發(fā)表于 01-02 17:08

    同樣是函數,CC++中有什么區(qū)別

    同樣是函數, CC++ 中有什么區(qū)別? 第一個返回值。 C語言的函數可以不寫返回值類型,
    的頭像 發(fā)表于 11-29 10:25 ?434次閱讀

    C語言C++結構體的區(qū)別

    同樣是結構體,看看在C語言C++中有什么區(qū)別
    的頭像 發(fā)表于 10-30 15:11 ?357次閱讀

    ostreamc++的用法

    ostream 是 C++ 標準庫中一個非常重要的類,它位于 頭文件(實際上,更常見的是通過包含 頭文件來間接包含 ,因為 包含了 和 )。 ostream 類及其派生類(如 std::cout
    的頭像 發(fā)表于 09-20 15:11 ?951次閱讀

    ModusToolbox 3.2c代碼包含c++代碼的正確步驟是什么?

    使用 ModusToolbox 3.2 我有一個用純 C 語言編寫的 XMC4700 項目。 我正在嘗試添加一些 C++ 函數,并將其合并到我的原始代碼。 我可以構建獨立的 .cpp
    發(fā)表于 07-23 08:21

    C++語言基礎知識

    電子發(fā)燒友網站提供《C++語言基礎知識.pdf》資料免費下載
    發(fā)表于 07-19 10:58 ?7次下載

    C++實現類似instanceof的方法

    函數,可實際上C++沒有。但是別著急,其實C++中有兩種簡單的方法可以實現類似Java的instanceof的功能。
    的頭像 發(fā)表于 07-18 10:16 ?673次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>中</b>實現類似instanceof的方法

    PLC編程語言C語言區(qū)別

    工業(yè)自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們
    的頭像 發(fā)表于 06-14 17:11 ?3242次閱讀

    SEGGER編譯器優(yōu)化和安全技術介紹 支持最新CC++語言

    SEGGER編譯器是專門為ARM和RISC-V微控制器設計的優(yōu)化C/C++編譯器。它建立強大的Clang前端上,支持最新的CC++
    的頭像 發(fā)表于 06-04 15:31 ?1528次閱讀
    SEGGER編譯器優(yōu)化和安全技術介紹 支持最新<b class='flag-5'>C</b>和<b class='flag-5'>C++</b><b class='flag-5'>語言</b>

    C/C++兩種宏實現方式

    #ifndef的方式受C/C++語言標準支持。它不僅可以保證同一個文件不會被包含多次,也能保證內容完全相同的兩個文件(或者代碼片段)不會被不小心同時包含。
    的頭像 發(fā)表于 04-19 11:50 ?701次閱讀

    鴻蒙OS開發(fā)實例:【Native C++

    使用DevEco Studio創(chuàng)建一個Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用C標準庫hypot接口計算兩個給定數平方和的平
    的頭像 發(fā)表于 04-14 11:43 ?2766次閱讀
    鴻蒙OS開發(fā)實例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯誤

    在前兩篇博客,我們?向您介紹了新的 MISRA C++ 標準?和?C++ 的歷史?。在這篇博客,我們將仔細研究以 C++
    的頭像 發(fā)表于 03-28 13:53 ?861次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環(huán)中的錯誤

    為什么很少用C++開發(fā)單片機

    C語言是面向過程的語言C++是面向對象的編程語言。結合本文來說,面向過程相比面向對象的編程,生成代碼量(bin文件)更小,運行效率更高。
    發(fā)表于 03-25 14:26 ?1142次閱讀
    為什么很少用<b class='flag-5'>C++</b>開發(fā)單片機

    C語言#define的應用

    C/C++ 編程語言中,當程序被編譯時,被發(fā)送到編譯器,編譯器將程序轉換為機器語言,然后完成編譯并執(zhí)行該程序。預處理器也稱為宏預處理器。
    發(fā)表于 03-06 11:29 ?426次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>#define的應用
    15人百家乐桌| 六合彩网址| 破解百家乐官网打路单| 百家乐官网制胜绝招| 百家乐赌机玩法| 澳门博彩足球| 欢乐博百家乐官网娱乐城| 澳门百家乐赢钱窍门| 大发888无数| 滨海湾百家乐官网娱乐城| 百家乐怎么打啊| 大发888送彩金| 澳门百家乐官网必胜看路| 百家乐视频软件下载| 大发888游戏平台 df888ylc3403| 百家乐官网路单破解器| 澳门百家乐备用网址| bet365在线体育投注| 百家乐官网连锁| 太阳城ktv| 百家乐官网过两关| 破战百家乐的玩法技巧和规则 | 网络棋牌室| 百家乐官网注册18元体验金| 赌百家乐怎样能赢| 乌什县| 真人百家乐888| 足球竞猜推荐| 百家乐官网官方网站| 晓游棋牌官方下载| V博百家乐官网的玩法技巧和规则 中骏百家乐官网的玩法技巧和规则 | 大发888玩哪个| 真人百家乐官网赌场娱乐网规则| 全讯网a3322| 百家乐官网翻天粤语快播| 香港百家乐玩| 圣淘沙百家乐官网现金网| 百家乐开发软件| 博九网百家乐官网游戏| 百家乐玩家技巧分享| 阿图什市|