打印

sizeof问题

[复制链接]
1519|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可以自己试试

使用特权

评论回复
5
pkat| | 2012-9-23 12:01 | 只看该作者
很基础的问题,自己调试就能解决的

使用特权

评论回复
6
sinadz| | 2012-9-23 12:24 | 只看该作者
LZ可以翻翻C++ primer这本书,上面有详细的论述

使用特权

评论回复
7
autor| | 2012-9-23 15:29 | 只看该作者
3楼正解啊。就是这个样子的

使用特权

评论回复
8
菜鸟同学| | 2012-9-23 22:12 | 只看该作者
这个东西好久没研究了,标记下,以后记下,

使用特权

评论回复
9
firstblood| | 2012-9-27 14:35 | 只看该作者
sizeof不就是求数组的长度的问题么?是个函数的,具体用法的也见楼上各位的讨论的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝