[问题] 字串阵列地址问题

楼主: 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