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

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

Links booklink

Contact Us: admin [ a t ] ucptt.com