PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 一个string的奇怪问题
楼主:
RealJack
2015-05-18 21:01:03
string s1("abc");
char *p=&s1[2];
cout<<*p<<endl; //印出c
cout<<p<<endl; //印出c <= why?
为何最后一行印出来的不是地址?
目前卡关中,有请各位解惑
谢谢
作者:
azureblaze
(AzureBlaze)
2015-05-18 21:05:00
cout << (void*)p << endl;因为char*同时也可是字串,所以iostream自作聪明
楼主:
RealJack
2015-05-18 21:18:00
感谢楼上!
作者:
MOONRAKER
(㊣牛鹤鳗毛人)
2015-05-18 21:19:00
阿不然你想 p="c" 后 cout << p会跑出什么
楼主:
RealJack
2015-05-18 23:25:00
我认为应该印出指向'c'的位址,像是0x5c1450但我忘了char *是C式字串,会从指到的位址一直印到'\0'
作者:
dritchie
(卍~迈斯纳效应~卍)
2015-05-19 00:31:00
好危险的写法...
作者:
MOONRAKER
(㊣牛鹤鳗毛人)
2015-05-19 07:38:00
是阿,char *当字串印出,这是规定的
作者:
dirkc
(3781615)
2015-05-23 00:32:00
危险地方应是在于s1如果赋值或修改后,p可能指向无效位址
楼主:
RealJack
2015-05-24 14:36:00
楼上意思是赋予超过s1分配空间的字串,会重新分配空间p指的位置就不是s1新分配空间的位置,是这个意思吗?
继续阅读
[问题] 有关阵列的问题
ununnihao
[问题] typedef对函数指标的用法
kilva
[问题] 多点到直线的距离
firingmoon
[问题] Arduino超音波避障自走车 C
ShOwLeFi
[问题] 资料排序
hardware
Re: [问题] Boost 1.58 建置失败
qscgy4
[问题] Boost 1.58 建置失败
qscgy4
Re: [问题] c程式学习步骤
Feis
[问题] c程式学习步骤
hopeandhmm
[问题] 关于程式流程的一些疑惑
e12518166339
Links
booklink
Contact Us: admin [ a t ] ucptt.com