关于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

请给出答案,并解释以下原因,谢谢
...全文
20 22 打赏 收藏 举报
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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是返回数据类型的大小;
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
C++ 语言
加入

6.1w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2003-12-12 09:48
社区公告
暂无公告