某32位系统下, C++程序,请计算sizeof 的值

来源:百度知道 编辑:UC知道 时间:2024/06/20 03:53:38
某32位系统下, C++程序,请计算sizeof 的值(5分).
char str[] = “www.ibegroup.com
char *p = str ;
int n = 10;
请计算
sizeof (str ) = ?(1)
sizeof ( p ) = ?(2)
sizeof ( n ) = ?(3)
void Foo ( char str[100]){
请计算
sizeof( str ) = ?(4)
}
void *p = malloc( 100 );
请计算
sizeof ( p ) = ?(5)

要答案和计算过程

程序如下:
#include<stdio.h>
void Foo ( char str[100]);
int main()
{
char str[] = "www.ibegroup.com";
char *p = str ;
int n = 10;
printf("%d\n%d\n%d\n",sizeof(str),sizeof(p),sizeof(n));
Foo(str);
void *qp =(void*) malloc( 100 );
printf("%d", sizeof (qp ));
}
void Foo ( char str[100])
{
printf("%d\n", sizeof(str));
}
结果:
17 (字符1个字节一个,17个字符)
4 (指针类型的长度都是4个字节)
4 (int类型4个字节)
4 (传到函数里面的是指针,还是4个字节)
4 (指针,或叫地址就是4个字节)

sizeof()计算的是类型,与值无关
32位机,表示地址是四个字节长度
(1)17//数组的长度=元素个数(17)*元素长度(1)字节
(2)4//指针类型,即地址,长度为4字节
(3)4//int类型,长度为4字节
(4)4//数组名在函数体中被当成一个指针来使用,所以为4
(5)4//空指针也是指针,长度为4字节

1) 17(包括一个空字符)
2) 4
3) 4
4) 4
5) 4