• 全部
  • 问答

《c++primer》中的例题,菜鸟的问题

asvaboy1980 2002-11-12 04:36:38
关于sizeof的问题,在p132页中,有道例题:
#include<iostream>
#include<string>
#include<cstddef>
using namespace std;
int main()
{ int *pi=new int[12];
cout<<"*pi:"<<sizeof(*pi)<<endl;
cout<<"pi:"<<sizeof(pi)<<endl;
string st1("foobar");
string st2("a mighty ok");
string *ps=&st1;
cout<<"st1:"<<sizeof(st1)<<endl;
cout<<"st2:"<<sizeof(st2)<<endl;
cout<<"ps:"<<sizeof(ps)<<endl;
cout<<"*ps"<<sizeof(*ps)<<endl;
cout<<"short:\t"<<sizeof(short)<<endl;
cout<<"short*:\t"<<sizeof(short*)<<endl;
cout<<"short&:\t"<<sizeof(short&)<<endl;
cout<<"short[3]\t"<<sizeof(short[3])<<endl;
}
我输出的结果是:st1和st2的sizeof都是4,而书上说是12?
怎么会这样?希望大家聊聊!
...全文
10 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
asvaboy1980 2002-11-28
已结
回复
nothing707 2002-11-17
我的16
我也不知道
请高手指点
回复
imwj 2002-11-13
我怎么是16啊
回复
whowho 2002-11-13
我也在看C++PRIMER 你们能帮忙解释一下P413 下的:
template<typename type,int size>
type min(type(&array[size]){/*.....*/}
typedef int (&rai)[10];//?
typedef double (&rad)[20];//?
void func(int (*)(rai));//?
void func(double (*)(rad));//?
意思吗??
谢了:》

回复
zhengguoshan 2002-11-13
这个好像跟机子有关吧。。
回复
dirac 2002-11-13
JulianCSDN(一杯绿茶)说的对。书上只是一个例子,不必拘泥。
回复
NetBird_China 2002-11-13
string类型的大小是16
回复
asvaboy1980 2002-11-13
怪事多多,我的exe文件的确输出的是sizeof(stl)是4,不是16,也不是12
回复
JulianCSDN 2002-11-13
sizeof的结果是平台相关的,比如说在32位系统下sizeof(int)为4,但在16位系统下sizeof(int)则为2,更何况作者Lippman是具有Unix背景的呢?
回复
wxj81 2002-11-13
sizeof(st1)是string类型的大小:应该是16
至于你说的12应该是st2的长度
用strlen(st2)可得出
回复
asvaboy1980 2002-11-12
我知道是4啊,但是书上说的是12???是书上错了吗?
回复
myjirong 2002-11-12
sizeof(st1)是指针的大小.4.
回复
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-11-12 04:36
社区公告
暂无公告