GESP 四级 · GESP 202606 C++ 四级 第 6 题

选择题 · 答案 C

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

题目

小杨正在开发一款名为“星际网格”的游戏,他用二维数组 int map[5][4]; 来表示地图。已知 int 占 $4$ 字节,如果 map 的内存地址是 0x2000,则表达式 &map + 1 的地址值是( )。

答案:C

解题思维

答案C。考点: 数组/字符串的基本操作。

常见错误

关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。

数组下标从0开始,a[n]访问的是第n+1个元素。越界不报编译错但结果不可预测。

详细解析(节选)

【考点】二维数组内存计算|指针算术运算|表达式求值

解题思维:先算总元素数 5×4=20 个,每个 int 占 4 字节,得 20×4=80 字节,80 进制是 0x50。&map 是数组整体首地址,+1 表示往后移动一个"map 数组"的跨度,即整体大小 80 字节,所以 0x2000+0x50=0x2050。

陷阱拆解:

反命题思维:若改成 int map[3][6] 或 short map[5][4],答案会如何变化?命题人正是要你区分"指针整体加一"和"元素指针加一"的本质差异。

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