99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2022-04-24 16:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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修飾的全局變量不能以地址的形式進行修改,由于它在內(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在編譯的預處理階段就替換為相對應的常量,假如 #define Max 1024; 那么我們在由于這發(fā)生錯誤,他只會提示1024出現(xiàn)錯誤,

而我們換成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; //×

審核編輯 :李倩

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

    關(guān)注

    180

    文章

    7632

    瀏覽量

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

    關(guān)注

    22

    文章

    2119

    瀏覽量

    75278
  • CONST
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    8461

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    OpenVINO? C++代碼啟用 AddressSanitizer 時的內(nèi)存泄漏怎么解決?

    OpenVINO? C++代碼啟用 AddressSanitizer 時遇到內(nèi)存泄漏: \"#0 0xaaaab8558370 in operator new(unsigned
    發(fā)表于 06-23 07:16

    主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

    單片機的地界兒里,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩
    的頭像 發(fā)表于 05-21 10:33 ?441次閱讀
    主流的 MCU 開發(fā)<b class='flag-5'>語言</b>為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

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

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

    源代碼加密、源代碼防泄漏c/c++與git服務器開發(fā)環(huán)境

    源代碼加密對于很多研發(fā)性單位來說是至關(guān)重要的,當然每家企業(yè)的業(yè)務需求不同所用的開發(fā)環(huán)境及開發(fā)語言也不盡相同,今天主要來講一下c++及git開發(fā)環(huán)境的源代碼防泄密保護方案。企業(yè)源代碼泄密場景一、很多
    的頭像 發(fā)表于 02-12 15:26 ?525次閱讀
    源代碼加密、源代碼防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>與git服務器開發(fā)環(huán)境

    Spire.XLS for C++組件說明

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

    EE-112:模擬C++的類實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《EE-112:模擬C++的類實現(xiàn).pdf》資料免費下載
    發(fā)表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類實現(xiàn)

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

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

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

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

    C語言C++結(jié)構(gòu)體的區(qū)別

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

    C7000優(yōu)化C/C++編譯器

    電子發(fā)燒友網(wǎng)站提供《C7000優(yōu)化C/C++編譯器.pdf》資料免費下載
    發(fā)表于 10-30 09:45 ?0次下載
    <b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器

    使用OpenVINO GenAI APIC++構(gòu)建AI應用程序

    許多桌面應用程序是使用 C++ 開發(fā)的,而將生成式AI(GenAI)功能集成到這些應用程序可能會很具有挑戰(zhàn)性,尤其是因為使用像 Hugging Face 這樣的 Python 庫的復雜性。C++
    的頭像 發(fā)表于 10-12 09:36 ?1121次閱讀
    使用OpenVINO GenAI API<b class='flag-5'>在</b><b class='flag-5'>C++</b><b class='flag-5'>中</b>構(gòu)建AI應用程序

    ostreamc++的用法

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

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

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

    C++語言基礎知識

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

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

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