第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

指針指向問題

char?*?const?foo?=?"helloworld";

這里指針指向不可變,但指向的空間中的數(shù)據(jù)可變,請教一下老師這里如何改變變量 foo 內(nèi)存空間中的數(shù)據(jù)呢?

我嘗試了如下做法,發(fā)現(xiàn)并沒有輸出,請教一下為什么不報錯?又為什么沒有任何輸出?謝謝老師!

foo[0]?+=?'c';
cout?<<?foo?<<?endl;


正在回答

1 回答

這是一個很特別的情況。?
理論上是要報錯的,應(yīng)該無法執(zhí)行,編譯階段就報錯。
"helloworld" 是字符串常量,它是不允許被修改的。
所以你說的“....? 但指向的空間中的數(shù)據(jù)可變” 這句話不對。 字符串常量存放的位置是很特殊的,是只讀的,不允許修改。

可以像下面這樣做:
char arr[20] = "helloworld";
char * const foo = arr;
foo[0] += 'c';
cout << foo << endl;


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕俠2466091

補(bǔ)充一下,我不知道你用“+”的目的。 foo[0] += 'c'; 改為 foo[0] = 'c'; 更容易看出我的方法,修改foo[0]是有效的
2020-10-22 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Brannua 提問者 回復(fù) 慕俠2466091

哈哈贊,感謝同學(xué)!之前剛學(xué)c++寫出了這么無語的代碼哈哈哈,我理解你這里就是手動開辟了字符數(shù)組,用 "helloworld" 初始化這個字符數(shù)組,這個字符數(shù)組由于是程序員自己開辟的,所以屬于c語言中的字符串變量,無論用 foo 這個常指針還是用字符數(shù)組默認(rèn)返回的首地址(也就是通過arr[i])的方式,都可以讀寫字符數(shù)組中的內(nèi)容。
2020-10-27 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
C++遠(yuǎn)征之封裝篇(下)
  • 參與學(xué)習(xí)       70903    人
  • 解答問題       531    個

封裝--面向?qū)ο笕筇卣髦?,通過案例讓C++所學(xué)知識融會貫通

進(jìn)入課程

指針指向問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號