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

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

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

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

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

簡單的const關(guān)鍵字里面的學(xué)問還是挺大的,越是基礎(chǔ)的知識越是容易忘卻。

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

1.在c語言中const

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

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

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

const int a = 10;

int *p = (int *)&a;

*p = 20;

printf(“a = %d

”,a);

return 0;}

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

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

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

2.c++中的const

2.1 c++中const的使用

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

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

1、const int a = 10;

這種情況是不分配內(nèi)存的,直接被寫在符號表中,即使后面被分配了內(nèi)存,那么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; } ```

測試結(jié)果如下圖所示:

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

2、int b =100;

const int a = b;

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

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

2.2 c++中const的使用建議

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

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

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

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

這一題目都是面試中好多公司愿意問的問題,剛好學(xué)習(xí)到這,就把這塊也納入到本章節(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; //×

審核編輯 :李倩

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

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135584
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2090

    瀏覽量

    73405
  • CONST
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    8136

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

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    C++語言基礎(chǔ)知識

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

    C++實現(xiàn)類似instanceof的方法

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

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

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

    C/C++兩種宏實現(xiàn)方式

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

    c語言,c++,java,python區(qū)別

    操作系統(tǒng)、嵌入式系統(tǒng)等對性能要求較高的場景。C語言的語法相對簡單,學(xué)習(xí)曲線較平緩,也是學(xué)習(xí)其他高級語言的入門語言。 C++
    的頭像 發(fā)表于 02-05 14:11 ?1655次閱讀

    vb語言c++語言區(qū)別

    VB語言C++語言是兩種不同的編程語言,雖然它們都屬于高級編程語言,但在設(shè)計和用途上有很多區(qū)別
    的頭像 發(fā)表于 02-01 10:20 ?1793次閱讀

    C++Linux內(nèi)核開發(fā)從爭議到成熟

    Linux 內(nèi)核郵件列表中一篇已有六年歷史的老帖近日再次引發(fā)激烈討論 —— 主題是建議將 Linux 內(nèi)核的開發(fā)語言C 轉(zhuǎn)換為更現(xiàn)代的 C++
    的頭像 發(fā)表于 01-31 14:11 ?538次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>在</b>Linux內(nèi)核開發(fā)<b class='flag-5'>中</b>從爭議到成熟

    C++簡史:C++是如何開始的

    的 MISRA C++:2023 博客系列的第二部分。 在這篇博客,我們將深入探討 C++ 的歷史、編程語言多年來的發(fā)展歷程以及它的下一步發(fā)展方向。
    的頭像 發(fā)表于 01-11 09:00 ?486次閱讀
    <b class='flag-5'>C++</b>簡史:<b class='flag-5'>C++</b>是如何開始的

    C語言C++那些不同的地方

    ++11標(biāo)準(zhǔn)。根據(jù)不同的標(biāo)準(zhǔn),它們的功能也會有所不同,但是越新的版本支持的編譯器越少,所以本文討論的時候使用的C語言標(biāo)準(zhǔn)是C89,C++標(biāo)
    的頭像 發(fā)表于 12-07 14:29 ?852次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>和<b class='flag-5'>C++</b><b class='flag-5'>中</b>那些不同的地方

    如何選擇創(chuàng)建c語言c++

    選擇創(chuàng)建 C 語言C++ 都需要綜合考慮多個因素。決定使用哪種語言之前,我們需要對這兩種語言
    的頭像 發(fā)表于 11-27 15:58 ?529次閱讀

    visualc++怎么新建c語言文件

    Visual C++ 是一個集成開發(fā)環(huán)境(IDE),用于開發(fā) CC++ 程序。 Visual C++
    的頭像 發(fā)表于 11-27 15:57 ?3300次閱讀

    c++怎么開始編程

    C++是一種高級的、通用的編程語言,用于開發(fā)各種類型的應(yīng)用程序。它是從C語言演變而來,也是一種靜態(tài)類型語言,可以
    的頭像 發(fā)表于 11-27 15:56 ?824次閱讀

    C/C++語言學(xué)習(xí)大全套

    電子發(fā)燒友網(wǎng)站提供《C/C++語言學(xué)習(xí)大全套.rar》資料免費下載
    發(fā)表于 11-18 14:33 ?2次下載
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>語言</b>學(xué)習(xí)大全套

    C++之父新作帶你勾勒現(xiàn)代C++地圖

    為了幫助大家解決這些痛點問題,讓大家領(lǐng)略現(xiàn)代C++之美,掌握其中的精髓,更好地使用C++C++之父Bjarne Stroustrup坐不住了,他親自操刀寫就了這本《C++之旅》!
    的頭像 發(fā)表于 10-30 16:35 ?746次閱讀
    <b class='flag-5'>C++</b>之父新作帶你勾勒現(xiàn)代<b class='flag-5'>C++</b>地圖