色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

同樣是const,為什么結果不一樣?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-02-02 16:03 ? 次閱讀

昨天有個學生去做C/C++軟件工程師的筆試題,遇到了這么一個題目,來問我結果是多少?

bc0d0b5c-a2ce-11ed-bfe3-dac502259ad0.png

看似非常普通的一道C語言題目,如果不指定編譯器,還真不知道結果是多少。

不信我來演示給你看下。

首先是用gcc來編譯,就是C語言的編譯器,語法沒有問題,運行結果,num = 2。

root@Turbo:test# gcc test.c -o test

root@Turbo:test# 。/test

num = 2

root@Turbo:test#

同樣的代碼,換成g++來編譯,就是C++的編譯器,結果是num = 1。

root@Turbo:test# g++ test.c -o test

root@Turbo:test# 。/test

num = 1

root@Turbo:test#

都說C++是兼容C語言的,為什么在處理結果上卻不同。

其實說兼容當然是沒問題的,只是C語言和C++中const的作用不同。

C語言中,const修飾的是只讀變量,意思是不能通過變量本身去修改對應內存的值,但是可以通過其他方式去修改,比如指針。代碼中確實也是通過指針來修改的,所以num對應的那塊內存值變了。

但是在C++中,const修飾的就是一個常量,跟define定義的宏有點類似,它存放在符號表中,接下來只要遇到這個常量,直接就是替換。

那么問題就來了,既然它沒有存放在內存中,為什么代碼中還能對他進行取地址的操作。

這一點主要還是為了兼容C語言,強行對它取地址,編譯器會分配一塊內存,并且把常量的值填在內存里面,然后取這塊內存的地址進行運算。但是整個過程并不會影響常量的屬性,代碼下面遇到,還是直接替換。

const在C++中還有很多用處,修飾成員變量、修飾成員函數,所以學完了C語言,如果有精力,可以去看看C++,不為別的,學習C++可以更好的理解C語言。

審核編輯 :李倩

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

    關注

    180

    文章

    7605

    瀏覽量

    136993
  • C++
    C++
    +關注

    關注

    22

    文章

    2110

    瀏覽量

    73685
  • CONST
    +關注

    關注

    0

    文章

    44

    瀏覽量

    8177

原文標題:同樣是const,為什么結果不一樣?

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    為什么labview公式節點內不同的公式形式結果不一樣呢?

    上面兩個程序其實是一樣的,第個和第二個中公式節點內只是x的三次方和二次方形式不一樣,但為什么結果圖形中虛線的圖線不一樣呢?應該
    發表于 01-07 16:30

    ad620放大電路結果跟想要的結果不一樣

    這個放大電路結果跟想要的結果不一樣。怎么辦, 想要的結果是4.5V
    發表于 05-13 20:37

    為什么同個電路,同樣的參數,每次的仿真結果為什么會不一樣,頭疼

    用Multisim仿真個很簡單的電路圖,但是同個電路圖,同個仿真參數,為什么仿真出來的結果不一樣呢?跪求大神指點解答!
    發表于 05-15 17:17

    請問使用ActiveX需要注意什么嗎?為什么兩個同樣程序框圖的vi,運行結果不一樣

    不一樣?附件中的 Display PDF File-1.vi 是正常可以執行; Display PDF File-2.vi 卻有錯誤,執行不出結果
    發表于 03-28 10:43

    程序編輯器結果不一樣

    有個程序段int i=1;int j=0;j=((i++)*(i++));printf(“%d,%d\n”,i,j);在不同的編輯器結果為什么不一樣 我用虛擬機的VI編輯結果i=3;j=1;用C++編輯
    發表于 03-13 02:22

    為什么我的淚滴不一樣

    我的淚滴怎么和網上的不一樣??
    發表于 03-13 15:23

    請問keil5代碼一樣但運行結果不一樣是怎么回事?

    在用keil5的時候,兩個一模一樣的代碼執行的結果不一樣。經過多次測試都是這樣的現象。不知道是不是我的環境配置有問題還是其他的?
    發表于 06-13 04:35

    這個仿真例程設置的參數一樣,為何會出現不一樣的仿真結果

    這個仿真例程設置的參數一樣,為何會出現不一樣的仿真結果
    發表于 12-23 09:08

    freeRtos和裸機 跑同樣個程序,效率不一樣

    freeRtos和裸機 跑同樣個程序,效率不一樣,RTOS只有個task,而且沒有vTaskDelay 掛起。跑同樣
    發表于 07-04 11:10

    同樣的電機,電壓等級、功率等都一樣,為什么電機的勵磁電壓不一樣呢?

    請教了好多人,都沒有個真正的答案。 同樣的電機,電壓等級、功率等都一樣,為什么電機的勵磁電壓不一樣呢??
    發表于 11-17 08:28

    AD633在multisim上仿真,結果與預期不一樣怎么解決?

    按照官方提供的除法電路,在multisim上仿真,結果與預期不一樣,求高手解釋
    發表于 11-17 10:53

    在車輛自燃方面,電動汽車和燃油汽車有什么不一樣

    說起車輛的自燃問題,無論是純電動汽車還是燃油車,都會有自燃的事件出現,對于同樣是自燃,電動汽車和燃油車汽車有哪些不一樣
    發表于 10-28 09:00 ?1157次閱讀

    C++中不一樣的重載是什么

    這里想分享C++中不一樣的重載,即const重載。
    的頭像 發表于 02-21 14:02 ?772次閱讀
    C++中<b class='flag-5'>不一樣</b>的重載是什么

    電容容量一樣大小不一樣能用嗎

    有時候家里面電器中的電容損壞,很多人很難找到一模一樣的來更換,能找到容量致的電容器就不容易了,電容容量一樣大小不一樣能用嗎?
    的頭像 發表于 09-21 09:54 ?2534次閱讀

    不同芯片的DMA(Direct Memory Access)是不一樣

    不同芯片的DMA(Direct Memory Access)是不一樣
    的頭像 發表于 10-16 09:14 ?1567次閱讀
    主站蜘蛛池模板: 亚洲精品一线二线三线无人区| av av在线| 古风一女N男到处做高H| 色尼玛亚洲综合| 国产性夜夜春夜夜爽1A片| 伊人久久大香网| 青青草原直播| 国内精自品线一区91| 4388成人| 网友自拍偷拍| 久久毛片网站| 免费xxx成年大片| 别插我B嗯啊视频免费| 亚欧视频在线观看| 麻1豆传媒2021精品| 国产福利不卡在线视频| 野花日本手机观看大全免费3| 男女牲交全过程免费播放| 国产精品久久久久久影院| 中文字幕在线播放视频| 色人阁影视| 麻豆国产原创中文AV网站| 国产精品自产拍在线观看中文| 2020亚洲国产在线播放在线| 天堂so导航| 女子扒开腿让男生桶爽| 黑色丝袜美女被网站| 超碰国产人人做人人爽| 有人有片的观看免费视频| 色偷偷影院| 麻豆区蜜芽区| 激情床戏视频片段有叫声| 成人精品视频在线| 18禁裸乳无遮挡免费网站 | 色哒哒影院| 久欠热视频精品首页| 国产欧美无码亚洲| WWWXXXX兽交| 97亚洲狠狠色综合久久位| 一个人HD在线观看免费高清视频| 天堂色|