关于win nt 下32位c++程序中 sizeof 的计算,请赐教

zzjb 2003-12-12 09:48:16

void func(char str[100])
{
请计算
sizeof(str)=答案1
}

char str[]="Hello";
char *p=str;
int n=10;
请计算
sizeof(str)=答案2
sizeof(p)=答案3
sizeof(n)=答案4

void *p=malloc(100);
请计算
sizeof(p)=答案5

请给出答案,并解释以下原因,谢谢
...全文
90 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzjb 2003-12-14
  • 打赏
  • 举报
回复
谢谢大家,基本上终于弄清楚了
zzjb 2003-12-13
  • 打赏
  • 举报
回复
顺便问一句
sizeof()返回的值是以字为单位还是以字节为单位?
cxjddd 2003-12-13
  • 打赏
  • 举报
回复
不管怎样,p 本身是一个指针变量。
那么 sizeof (p) == sizeof (void*) == 4。

这只与 p 自身的类型有关,而与 p 的值(也就是 p 指向多大的内存)无关。
zzjb 2003-12-13
  • 打赏
  • 举报
回复
我现在还是一头雾水,不好意思
如果是字节为单位的话,int是占2个字节,那为什么int n=10,sizeof(n)=4个字节呢

还有
str 是一个指针 ,占4个字节,所有指针的 sizeof() 运算后都是4,
char *a;
char b[10];
int c[10];
bool d[10];
sizeof(a);sizeof(b);sizeof(c);sizeof(d) 都是4。
为什么说b,c,d都是指针?
谢谢
LinuxPanther 2003-12-13
  • 打赏
  • 举报
回复
程序是temp1=temp了
但是,具体是为什么,我也说不清了
LinuxPanther 2003-12-13
  • 打赏
  • 举报
回复
void func(char str[100])
{
sizeof(str)=4
//str是一个指针了,你可以测试一下下面的程序:
char temp[]="asdasdfsdf";
char temp1[]="asdasdfsdf";
str=str1;
//如果str是一个数组的话,就会出现上面程序出现的问题
}
char str[]="Hello";
char *p=str;
int n=10;
sizeof(str)=6
sizeof(p)=4//p是一个指针变量。而str是一个常量指针。
sizeof(n)=4
void *p=malloc(100);
sizeof(p)=4//也是一个指针了。
hxblvc 2003-12-13
  • 打赏
  • 举报
回复
晕,这个问题我也遇到过,要得到数据长度,直接用strlen()就了啊
5852 2003-12-13
  • 打赏
  • 举报
回复
楼主 对于sizeof 不同的编译环境结果是不一样的 同样是int TC下占两个字节 VC下四个字节 而指针通常占四个字节
sharkhuang 2003-12-13
  • 打赏
  • 举报
回复
函数调用的时候!数组copy退化为指针!
kof99 2003-12-13
  • 打赏
  • 举报
回复
sizeof返回值无须具体知道是多少,只要能用就行了.
就好象指针一样,无须知道它的值.
sboom 2003-12-13
  • 打赏
  • 举报
回复
字节为单位。
willpower88 2003-12-13
  • 打赏
  • 举报
回复
上机试一试不就知道了吗?
int型在vc6.0中,就是4位。
如果你有兴趣可以,sizeof(stract class)
zzjb 2003-12-12
  • 打赏
  • 举报
回复
这个我昏头了,丢人:)
那 最后 一个 void *p=malloc(100);
不是申请了100个字节的空间吗
怎么 sizeof(p)=4呢?
cpsoft 2003-12-12
  • 打赏
  • 举报
回复
sizeof是类型的大小,不是数据的大小!!!
layman2008 2003-12-12
  • 打赏
  • 举报
回复
int 本身长度就是4呀

\0是字符串结束符,是一个符号
zzjb 2003-12-12
  • 打赏
  • 举报
回复
那 int n=10,sizeof(n)怎么也是4呢?
hello\0 一共七个,所以为6呢
layman2008 2003-12-12
  • 打赏
  • 举报
回复
楼上说的对!

sizeof(char) = 1

hello\0 一共六个,所以为6
byyyyy 2003-12-12
  • 打赏
  • 举报
回复
为什么是这样的呢,char str[100],sizeof(str)=答案为什么是4??

因为这是个指针,指针占4个字节。
sboom 2003-12-12
  • 打赏
  • 举报
回复
str 是一个指针 ,占4个字节,所有指针的 sizeof() 运算后都是4,
char *a;
char b[10];
int c[10];
bool d[10];
sizeof(a);sizeof(b);sizeof(c);sizeof(d) 都是4。

cpsoft 2003-12-12
  • 打赏
  • 举报
回复
sizeof(str)=sizeof(char);
sizeof(str[100])=sizeof(char);

sizeof是返回数据类型的大小;
加载更多回复(2)

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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