GESP 三级 · GESP 202603 C++ 三级 第 18 题

判断题 · 答案 A

← 整套速查表 GESP 三级 全部真题

题目

定义 int arr[] = {1,2,3}; ,则 sizeof(arr) 的结果为 $12$(int 占 $4$ 字节)。

答案:A

解题思维

答案A。计算机存储的基本单位是Byte(字节),用大写B表示。1 Byte = 8 bits。

常见错误

易错点:Byte(B)和bit(b)容易混淆。1 Byte = 8 bits。大写B是字节,小写b是位。

详细解析(节选)

【考点】sizeof 运算符|数组内存计算|数据类型大小

考纲定位:GESP C++三级"基本语法与数据类型"模块。命题人专门卡住"数组与指针混用时 sizeof 的含义"这一高频失误点。

解题思维:int arr[] = {1,2,3}; 实际在内存中是三个连续 int 对象,sizeof 返回总字节数而非元素个数。int 占 4 字节,3×4=12,故 A 正确。通法:对任意数组 A,sizeof(A) = 元素个数 × sizeof(元素类型);若写成 int *p = A,则 sizeof(p) 退化为指针大小。

陷阱拆解:B 是典型误判——把"数组名"当成"元素个数"或"指针"。命题人故意不写"int arr[3] = {1,2,3};"而用推背赋值,诱导学生忽略数组实际长度。更阴险的是"sizeof(arr) 和 sizeof(arr[0]) 混淆",前者是整体,后者是单个元素。只背结论不推敲语法的,必选错。

反命题思维:若题目改为"int arr[] = {1,2,3}; int *p = arr; sizeof(p)",答案将变为 4(32 位)或 8(64 位),考察指针与数组的边界。刷到类似题先问自己:这里是取数组还是取指针?——就能避开陷阱。

— ()

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断