首页 > 试题广场 >

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

[填空题]
 某32位系统下, C++程序,请计算sizeof 的值
char str[] = "http://www.xxxxx.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
void Foo ( char str[100])
{   }

数组作为形参时,数组的数组名会退化成一个指向该类型数组的指针,只要是指针,在32位系统中所占的字节数就是4,在64位系统中所占的字节数是8.
发表于 2015-09-16 10:53:22 回复(0)
转义字符是两个反斜杠\\,代表一个\,不是正斜杠//,做题时搞错了。指针在32位系统中占用4字节,其实是int型地址
编辑于 2015-10-26 15:37:52 回复(0)
当参数分别如下时,sizeof返回的值表示的含义如下:
数组——编译时分配的数组空间大小;
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,一般为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。

当数组作为参数是,数组就退化成了指针
编辑于 2016-09-07 09:30:23 回复(0)
数组作为形参时,数组的数组名会退化成一个指向该类型数组的指针,只要是指针,在32位系统中所占的字节数就是4,在64位系统中所占的字节数是8.
发表于 2016-05-28 10:59:34 回复(0)
有大神可以解释一下(5)吗?🙈
发表于 2016-03-23 21:51:38 回复(2)
21,怎么能算出17,服了
发表于 2015-07-07 17:54:59 回复(0)
字符串末尾有个'\0',故是20+1;指针的大小为4;int的也为4

发表于 2015-08-08 10:49:08 回复(0)
就我一个人算成21么?VS运行完也是21啊?
发表于 2017-05-30 16:49:00 回复(1)
(5)中新开辟了100的存储空间,并定义一个指针p指向这片存储空间的首地址,sizeof(p)与实际开辟空间的大小并没有关系,只与机器位数有关
发表于 2017-05-01 21:37:33 回复(0)
char str[] = "http://www.xxxxx.com" 
sizeof(str)会在末尾添加一个 '/0'
另外 转义字符是\\,而不是//
发表于 2017-04-18 21:41:21 回复(0)
sizeof计算字符串长度时计算的是占用的空间,包括'\0',则为20+1=21
指针在32位占4字节,64位占8字节
字符串当作参数传递时则变成了指针
发表于 2017-02-23 10:31:27 回复(0)
当数组作为参数时,数组就退化成了指针
发表于 2016-09-17 20:52:25 回复(0)
sizeof求字符串长度还要算'\0',数组传参时,数组退化为指针,32位下为4,64位下为8
发表于 2016-09-06 08:48:03 回复(0)
数错了。。。。
发表于 2016-08-30 21:20:47 回复(0)
字符串末尾有个'\0',故是20+1;指针的大小为4;int的也为4

只要是指针,在32位系统中所占的字节数就是4,在64位系统中所占的字节数是8.

数组作为形参时,数组的数组名会退化成一个指向该类型数组的指针
发表于 2016-06-01 09:51:32 回复(0)
17亮了==
发表于 2016-04-20 21:09:26 回复(0)
醉了,双/线数成一个了,写了20😂
发表于 2016-03-17 22:10:34 回复(0)
21
4
4
4
4
发表于 2015-08-27 20:14:59 回复(0)
这连题都看不了咋答
发表于 2015-08-23 19:49:20 回复(0)
第四个,数组作为参数传递退化为指针。
发表于 2015-08-23 16:31:12 回复(0)