首页 > 试题广场 >

某32位系统下, C++程序如下所示,sizeof 的值应为

[单选题]
某32位系统下, C++程序如下所示,sizeof 的值应为?
char str[] = "http://www.renren.com"  //(21个字符)
char *p = str ; 
请计算
sizeof (str ) = ?//(1)
sizeof (p) = ?//(2)
void Foo (char str[100]){
    sizeof(str) = ?//(3)
}
void *p = malloc(100);
sizeof(p) = ?//(4)

  • 22, 22, 100, 100
  • 4, 4, 4, 4
  • 22, 4, 4, 4
  • 22, 4, 100, 4
推荐
C
函数传递时数组退化为指针,
数组长度就是你定义数组时方括号中数字的大小。
字符串长度就是字符的个数。
字符串所占空间大小就是字符串长度+1(1个结束符的长度);
作为函数的形参传递时数组退化为指针 

char c[10]={'x','y','z'},d[]={'x','y','z'}; 不以‘\0’作为结束标志的,它就没有串结束标志, 字符数组的长度,就是数组的长度
sizeof(c)=10,sizeof(d)=3
编辑于 2016-01-12 11:36:49 回复(3)
作为函数参数的数组名退化为指针
发表于 2015-06-09 16:04:04 回复(0)
第一个长度为21,加上\0为22,第二个在32位操作系统中,指针大小为4,第三个,数组在作为函数的形参时,自动退化为同类型的指针,第四个指向开辟的内存的指针,大小仍然为4,所以结果为22. 4. 4. 4
发表于 2017-03-08 15:47:18 回复(0)
C++真多潜规则,,,函数传递时数组退化为指针
发表于 2015-09-02 04:08:50 回复(1)
C
又一次弄错了,主要是没分清指针和字符串。切记,下次不再犯了,另附程序测试截图。

发表于 2015-01-29 16:34:29 回复(3)
函数传递时数组退化为指针
发表于 2022-03-12 15:36:59 回复(0)
作为函数的形参传递时数组退化为指针
发表于 2019-05-10 19:31:34 回复(0)
sizeof 需要包括\0,,strlen不包括\0  并且只要是指针变量,就是4个字节
发表于 2017-06-30 19:02:53 回复(0)
来自@从零开始
函数传递时数组退化为指针,数组长度就是你定义数组时方括号中数字的大小。
字符串长度就是字符的个数。
字符串所占空间大小就是字符串长度+1(1个结束符的长度);
作为函数的形参传递时数组退化为指针 char c[10]={'x','y','z'},d[]={'x','y','z'}; 
不以‘\0’作为结束标志的,它就没有串结束标志, 字符数组的长度,就是数组的长度
sizeof(c)=10,sizeof(d)=3

发表于 2017-05-05 21:04:04 回复(0)
数组作为参数传递给函数的时候退化成指针
发表于 2016-12-20 14:41:14 回复(0)
sizeof(char)  1、
sizeof(int)     4、
sizeof(long)   4、
sizeof(long long) 8
sizeof(float) 4
sizeof(double) 8 、
sizeof(long double) 16

作为函数的形参传递时数组退化为指针


发表于 2018-04-09 21:00:01 回复(0)
第三个,数组在作为函数的形参时,自动退化为同类型的指针,// 重要
发表于 2022-05-26 12:05:32 回复(0)
第一个长度为21,加上\0为22,// 重要
第二个在32位操作系统中,指针大小为4,
第三个,数组在作为函数的形参时,自动退化为同类型的指针,// 重要
第四个指向开辟的内存的指针,大小仍然为4,所以结果为22. 4. 4. 4
发表于 2022-02-19 12:51:25 回复(0)
这里是我的问题,我忘记了
int a[]= {1,2,3};
其实是数组初始化的一种方式,此时并不会退化为指针,而且初始化的方式就两种,一种显示的指定维度,一种靠编译器推断
发表于 2020-04-03 23:55:10 回复(0)
数组名作为函数参数传递时退化为指针;


变量 str 类型为 char 数组,结尾自动加上“ \0 ”,共22个字节;
变量 p 类型为指针,指向 char,共1字节;
变量 str 类型为 char 数组,但在函数传递时退化为指针,故为 1 字节;
变量 p 类型为指针,指向 void,共 1 字节;
发表于 2020-01-26 12:20:29 回复(0)
数组作为函数形参时其自动退化为同类型指针,32位系统下占4字节
发表于 2019-09-05 16:40:04 回复(0)

作为函数的形参传递时,数组退化为指针

发表于 2019-04-29 19:26:13 回复(0)
C 函数传递时数组退化为指针, 数组长度就是你定义数组时方括号中数字的大小。 字符串长度就是字符的个数。 字符串所占空间大小就是字符串长度+1(1个结束符的长度); 作为函数的形参传递时数组退化为指针 char c[10]={'x','y','z'},d[]={'x','y','z'}; 不以‘\0’作为结束标志的,它就没有串结束标志, 字符数组的长度,就是数组的长度 sizeof(c)=10,sizeof(d)=3
发表于 2019-04-15 19:48:19 回复(0)
C 函数传递时数组退化为指针
发表于 2018-11-30 10:50:34 回复(0)
之前碰到了一次这种题,出现在函数形参表列中的局部数组会退化成指针,当时是char p[]这种形式,对于char a[100]这种形式有点不确定,现在算是明白
发表于 2018-07-17 21:38:22 回复(0)
数组作为函数参数传递时,退化为指针
发表于 2018-03-21 17:33:22 回复(0)