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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么cout打印char數(shù)組與其他數(shù)組不同?

為什么cout打印char數(shù)組與其他數(shù)組不同?

C++
慕尼黑8549860 2019-09-26 10:43:01
我正在使用C ++來了解指針的工作原理。我有一段使用數(shù)組的代碼,我只是用來了解等效項如何與指針一起工作。int main() {         int arr[10] = {1,2,3};         char arr2[10] = {'c','i','a','o','\0'};     cout << arr << endl;     cout << arr2 << endl;}但是,當我運行此命令時,arr輸出int數(shù)組的第一個元素的地址(如預期的那樣),但arr2不輸出chars數(shù)組的第一個元素的地址;它實際上會打印“ ciao”。我想念的還是尚未了解的是什么?
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

for const void*和for的重載是operator << const char*。您的char數(shù)組將轉(zhuǎn)換為const char*并傳遞給該重載,因為它比to更適合const void*。但是,將int數(shù)組轉(zhuǎn)換const void*為該版本并傳遞給該版本。運算符<<的版本const void*僅輸出地址。const char*實際接受版本的版本將其視為C字符串,并輸出每個字符,直到終止的空字符為止。如果不希望這樣,則在將char數(shù)組const void*傳遞給operator <<時將其顯式轉(zhuǎn)換為:

cout << static_cast<const void*>(arr2) << endl;


查看完整回答
反對 回復 2019-09-26
?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

因為cout的operator <<重載用于char*輸出字符串,并arr2與之匹配。

如果需要地址,請嘗試將字符數(shù)組轉(zhuǎn)換為空指針。


查看完整回答
反對 回復 2019-09-26
?
慕俠2389804

TA貢獻1719條經(jīng)驗 獲得超6個贊

雖然強制轉(zhuǎn)換可能是一種更有意義的方法,但是您也可以使用addressof運算符:

cout << &arr2 << endl;


查看完整回答
反對 回復 2019-09-26
  • 3 回答
  • 0 關(guān)注
  • 998 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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