首页 > 试题广场 >

short a[10] = 0;sizeof(a)返回:()

[单选题]
short a[10] = {0};sizeof(a)返回:()
  • 2
  • 20
  • 4
  • 10
这道题出错了吧?数组a的初始化明显不对。
gcc编译:

g++编译:

发表于 2016-06-23 21:12:45 回复(8)
B  10*2=20
发表于 2016-05-08 21:50:36 回复(0)
  • sizeof对数组就是数组长度*数据类型长度
  • sizeof对指针就是int型长度
  • sizeof对数据类型自然是数据类型长度
  • sizeof对结构体需要考虑结构的字节对齐
发表于 2017-06-21 11:57:40 回复(4)
short 为2个之节
发表于 2016-05-04 23:17:31 回复(0)
sizeof是一个操作符,其作用是返回一个对象或类型所占的内存字节数。
1,对基本数据类型:数据类型长度(占用字节数,比如int为4);
2,对结构体:因为编译器会对结构体进行字节对齐处理,所以结构体中求sizeof为最大类型长度乘以成员个数,另外空结构体为1;
3,对联合体:所有成员sizeof中的最大值;
4,对数组:普通数组→数组长度*数据类型长度,字符串数组→需要算上最后的’/0’,即多加1,作为函数形参→与指针类似;
5,对指针:与指针所指向的数据类型没有关系,是计算机内存大小,也可以说事内部地址总线的宽度,32位计算机为4,64位计算机为8;
6,对函数:结果为函数返回值类型大小,如果是void类型函数则报错。
以上
发表于 2020-05-05 18:48:42 回复(0)
我勒个去
看题的时候我就说这样初始化数组怎么能编译通过
错了以后马上运行果然不行
题库总搞这种唧唧歪歪的东西
以后还能不能愉快滴玩耍

发表于 2016-07-09 18:54:37 回复(3)
int getArray(int a[])
{
    cout<<sizeof(a)<<endl;
} int main()
{ int a[5];
    cout<<sizeof(a)<<" ";

    getArray(a);
}
输出20 8
sizeof数组名的时候,输出的是整个数组所占的空间大小。
拓展一下:
当输入作为函数参数时,已经退化为指针,因此在函数中输出sizeof数组名是,输出的是指针所占的空间大小。

发表于 2017-03-26 21:43:32 回复(2)
数组做sizeof的参数不退化,传递给strlen就退化为指针了。
发表于 2018-01-25 16:42:11 回复(1)
sizeof 运算符
【1】sizeof 运算符 返回一条表达式或者一个类型名字所占的字节数 。 满足右结合律 ,所得值是size_t 类型的常量表达式,  注: 数组下标类型是 size_t , 定义在头文件stddef中
【2】sizeof( type )  ----所占用的空间,
sizeof expr -----返回的是表达式结果类型的大小
注: sizeof(*p)等价于  sizeof *p ,在sizeof 的运算对象中解引用一个无效指针仍然是一种安全行为,
【3】对数组执行sizeof 运算符得到整个数组所占空间的大小,等价于 对数组所有的元素各执行一次。
此时数组名不会转换成指针来处理
【4】对string 对象 或者 vector 对象指向 sizeof 运算只返回该类型固定部分的大小,不会计算对象中元素占用多少空间
 
发表于 2017-01-18 09:44:37 回复(0)

数组做sizeof的参数不退化,传递给strlen就退化为指针了。

发表于 2019-04-04 23:43:53 回复(0)
题目初始化是有{}的,{}漏掉后编译是会出错的,别把人家代码还嫌题目坑;
即使不初始化,答案也是2*10=20;
发表于 2017-06-27 20:37:36 回复(0)
加上花括号以后对了。
sizeof都是求字节。short占两个字节。
而length一般指的是结构体的个数。
发表于 2016-08-30 08:48:04 回复(0)
这里a是一个数组,sizeof求得的是一个数组的存储大小。
发表于 2016-05-18 20:54:23 回复(0)
sizeof都是求字节,short是两字节。
发表于 2016-09-14 23:24:52 回复(0)
sizeof里面的a不再是首地址了
发表于 2022-08-08 12:38:04 回复(0)
short的大小为2字节;short [10]的大小就是20字节
发表于 2019-08-31 11:46:29 回复(0)
(单选题)可以这样初始化,注意后面有{} short a[10] = {0};
发表于 2017-07-25 08:51:20 回复(0)
sizeof int:4
sizeof short:2
sizeof long:4
sizeof float:4
sizeof double:8
sizeof char:1
short a[10] = {0};sizeof(a)
              sizeof(a)等于2*10=20;
发表于 2017-07-06 21:30:28 回复(0)
忘记了short类型是2个字节。
发表于 2017-06-22 21:27:44 回复(0)
忘记看类型了😂😂
发表于 2017-03-08 22:27:41 回复(0)