看板 C_and_CPP 關於我們 聯絡資訊
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
bibo9901: 因為 cout 對 const char * 有特別處理 04/11 14:37
dirkc: 喜歡的話也可以自己重載<<運算子,像這樣: 04/11 17:21
dirkc: ostream &operator<<(ostream &out,char const *x) {return 04/11 17:21
dirkc: (out<<(void*)x);} 04/11 17:22
anoymouse: 那為什麼我打cout<<&(b+1)會編譯錯誤? 04/11 18:52
bibo9901: b+1 是個暫時的結果, 是不能取址的 (他很可能跟本不在 04/11 22:57
bibo9901: 記憶體裡面) 04/11 22:58
anoymouse: 那要如何取b[1]的位址? 04/12 00:39
LPH66: 直接 &b[1] 04/12 01:18
anoymouse: 會顯示y friend 04/12 15:23
bibo9901: (void) &b[1] 04/12 21:54
bibo9901: 推太快... 更正 (void*) &b[1] 04/12 21:55