首页 > 试题广场 >

表达式的值

[单选题]
testArray是一个包含8个元素的int类型数组,请问表达式:
sizeof(testArray) / sizeof(testArray[0]);
的值是_____.
  • 1
  • 2
  • 4
  • 8
推荐
【正确答案】D
【解析】对数组名进行 sizeof,获取的是数组的字节大小,sizeof(testArray[0]) 是获取第一个元素的字节大小,两者相除得到的是数组元素的个数,即 8。
 
数组遍历知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp42
编辑于 2021-11-17 15:55:12 回复(0)
sizeof(testArray) 是数组大小 8*4  =32;
sizeof(testArray[0]) 是 testArray[0]的大小 4;
所以 sizeof(testArray)/sizeof(testArray[0]) = 8
发表于 2015-09-06 10:58:28 回复(0)
char* c = "HelloWorld";
char  ca[11] = "HelloWorld";
cout << sizeof(c) << endl;//4
cout << sizeof(ca) << endl;//11

发表于 2015-09-06 16:48:41 回复(2)

数组做sizeof的参数不退化,如果testArray没有退化为指针(做函数参数)就是D了。

发表于 2017-11-15 23:30:08 回复(0)
int类型是四个字节大小,sizeof(testArray[0])=4
sizeof(testArray)=32
32/4=8
发表于 2015-10-12 15:06:09 回复(1)
下面是C99中原话解释数组名什么时候退化为指针:
Except when it is the operand of the sizeof operator or the unary & operator, or is a string literal used to initialize an array, an expression that has type ‘‘array of type’’ is converted to an expression with type ‘‘pointer to type’’ that points to the initial element of the array object and is not an lvalue.
发表于 2018-12-17 21:52:48 回复(0)
这种方法一般都是用来求数组长度的,但是要区分是否是真的对数组使用的
发表于 2015-09-06 15:30:52 回复(0)
sizeof和strlen不同,主要有两点:
1.sizeof对于一个字符进行求长度需要注意末尾'/0',而strlen遇到'/0'自动结束;
2.当数组作为参数,strlen是函数,参数只能是*p形式,因此数组名会退化为指针,即为定义类型名大小,而sizeof可以传数组,计算出来的为数组的类型*个数
发表于 2020-10-31 15:17:13 回复(0)
这个题目明显有问题。
如果sizeof(arrytest)/sizeof(arrytest[0])在函数里就等于1
如果在main里,就等于8
发表于 2016-08-16 12:36:58 回复(3)
如果这里是字符串数组呢? char s[]="12345"; 这个是包含5个元素的字符数组; sizeof(s)=6; sizeof(s[0]); 如果两者之间相除就会比实际大1个步长。所以这里要注意是int型和字符型数组。
发表于 2023-07-03 12:38:35 回复(1)
不该错
发表于 2018-08-16 10:21:53 回复(0)
sizeof是C/C++关键字,以字节微单为来计算数据类型或者变量在内存中占用的字节数
sizeof(testArray): testArray是int型的数组类型,所占总内存字节 8*4=32
testArray[0]表示int型变量,所占内存字节为4
发表于 2018-03-04 10:02:34 回复(0)
这就是不用知道数组元素个数也可以求出长度,实现了strlen功能
发表于 2017-03-10 10:44:52 回复(0)
这也是求int 型数组长度的方法。
发表于 2016-07-17 09:51:11 回复(0)
这个问题答案很明显是数组的长度.数组的总字节数  / 每个元素的字节数 = 数组长度

发表于 2016-07-16 23:32:47 回复(0)