《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?
怎么会这样?希望大家聊聊!
...全文
52 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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.

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧