sizeof问题

[复制链接]
2006|8
 楼主| baidudz 发表于 2012-9-22 22:16 | 显示全部楼层 |阅读模式
代码如下:
int main(){
char str[20]="helloworld";
char* p=str;

(1) cout << (void*) p << endl;
cout << "p++=" << sizeof(p++) << endl;
(2) cout << (void*) p << endl;
cout << "p++=" << strlen(p++) <<endl;
(3) cout << (void*) p << endl;
}

输出结果为:
0xbfa42e84
p++=4
0xbfa42e84
p++=10
0xbfa42e85
可以看到(1)和(2)结果没有发生变化。谁能解释下原因。个人认为是sizeof在编译阶段就已经完成。并没有发生p++的操作。
火箭球迷 发表于 2012-9-22 22:32 | 显示全部楼层
sizeof在编译时完成,不会有运行时的的计算。
xsgy123 发表于 2012-9-22 22:39 | 显示全部楼层
sizeof是操作符,不是函数。所谓操作符是在编译阶段就算好的结果。关于sizeof跟strlen的论述网上已经非常多了,要不百度下
无冕之王 发表于 2012-9-22 22:53 | 显示全部楼层
LZ可以自己试试
pkat 发表于 2012-9-23 12:01 | 显示全部楼层
很基础的问题,自己调试就能解决的
sinadz 发表于 2012-9-23 12:24 | 显示全部楼层
LZ可以翻翻C++ primer这本书,上面有详细的论述
autor 发表于 2012-9-23 15:29 | 显示全部楼层
3楼正解啊。就是这个样子的
菜鸟同学 发表于 2012-9-23 22:12 | 显示全部楼层
这个东西好久没研究了,标记下,以后记下,
firstblood 发表于 2012-9-27 14:35 | 显示全部楼层
sizeof不就是求数组的长度的问题么?是个函数的,具体用法的也见楼上各位的讨论的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部