int main()
{
char const * pStr="the long string";
char const *p=pStr;
while(*p++);
cout<<(p-pStr)<<endl;
}
请问输出结果为什么是16,而不是15?
主要的原因是i++与++i的区别,i++是先做其他后自加,而++i是先自加后再做其他。当十五次,wile判断的是p的最后一个,不为null,所以还在while循环中,但是这p已经指向pStr后地址,这次再来一次while判断,就是空的,但是p指针还会自己一次,所以他的指针就指向pStr后个第二个地址。所以得到的结果是16.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。