首页 > 试题广场 >

以32位C++程序,请计算sizeof的值_________

[单选题]
以32位C++程序,请计算sizeof的值__________
void Func ( char str[100] ) { sizeof( str ) = ? }
void*p = malloc( 100 ); sizeof( p ) = ?;
  • 100,4
  • 4, 100
  • 4,4
  • 100, 100
数组做函数参数,会退化成指针 故4,4
发表于 2020-10-20 09:50:48 回复(2)
答案错误
 sizeof( str ) = 100,表示char型数组str的长度 100*1=100
void*p = malloc( 100 ); p是 空指针类型 ,32位机下占4个字节,64位机下占8个字节;sizeof(p)=4
指针类型均占4个字节(32位)
发表于 2020-08-13 09:36:08 回复(3)
数组当做参数传入的时候,已经退化为指针
发表于 2022-08-04 19:59:20 回复(0)
void Func(char str[100])
{
    printf("%d\n",sizeof(str));;
}
注意,此处的str在第一行就已经退化为指针,第三行的sizeof计算的是指针str的大小,32位情况下指针占4字节,打印出来就是4
发表于 2021-10-18 20:40:26 回复(0)
个人觉得这道题考察两个内容,数组作为形参退化为指针,另一个是指针的大小与什么有关?指针的大小不与它的类型有关,至于当前CPU运行模式的寻址位数有关!
发表于 2021-06-16 21:56:56 回复(0)
数组str 做形参退化为指针了???
发表于 2020-08-05 20:00:32 回复(3)
在32位的C++程序中,sizeof的值是以字节为单位表示对象或类型的大小。

对于第一个问题,函数参数 `char str[100]` 被解释为指向字符数组的指针,因此 `sizeof(str)` 的值将是指针的大小,即4个字节(在32位系统中)。

对于第二个问题,变量 `p` 是一个指针,无论分配的内存大小是多少,`sizeof(p)` 的值都是指针的大小,也是4个字节(在32位系统中)。

需要注意的是,`sizeof` 运算符在编译时确定对象或类型的大小,并且返回的结果是一个常量表达式。因此,无论实际分配的内存大小是多少,`sizeof` 的结果都是固定的。
发表于 2023-10-24 19:08:15 回复(0)
数组作参数时退化成指针
编辑于 2022-09-22 14:18:09 回复(0)
数组做函数参数,会退化成指针 故4,4
发表于 2022-08-09 21:13:45 回复(0)
数组名作为形参会退化成指针,指向第一个元素的地址
发表于 2022-01-11 05:38:31 回复(0)