[問題] 字串陣列地址問題

看板C_and_CPP (C/C++)作者 (沒有暱稱)時間11年前 (2015/04/11 14:26), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/1
char d[15]="my friend"; cout<<d; //會印出my friend cout<<&d;//印出d的起始位址 int b[3]={1,2,3}; cout<<b //印出b的起始位址 cout<<&b//印出b的起始位址 請問為什麼cout<<d 不會變成印出d的起始位址? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.115.4 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428733584.A.9F9.html

04/11 14:37, , 1F
因為 cout 對 const char * 有特別處理
04/11 14:37, 1F

04/11 17:21, , 2F
喜歡的話也可以自己重載<<運算子,像這樣:
04/11 17:21, 2F

04/11 17:21, , 3F
ostream &operator<<(ostream &out,char const *x) {return
04/11 17:21, 3F

04/11 17:22, , 4F
(out<<(void*)x);}
04/11 17:22, 4F

04/11 18:52, , 5F
那為什麼我打cout<<&(b+1)會編譯錯誤?
04/11 18:52, 5F

04/11 22:57, , 6F
b+1 是個暫時的結果, 是不能取址的 (他很可能跟本不在
04/11 22:57, 6F

04/11 22:58, , 7F
記憶體裡面)
04/11 22:58, 7F

04/12 00:39, , 8F
那要如何取b[1]的位址?
04/12 00:39, 8F

04/12 01:18, , 9F
直接 &b[1]
04/12 01:18, 9F

04/12 15:23, , 10F
會顯示y friend
04/12 15:23, 10F

04/12 21:54, , 11F
(void) &b[1]
04/12 21:54, 11F

04/12 21:55, , 12F
推太快... 更正 (void*) &b[1]
04/12 21:55, 12F
文章代碼(AID): #1LABwGdv (C_and_CPP)
文章代碼(AID): #1LABwGdv (C_and_CPP)