GESP 八级 · GESP 202603 C++ 八级 第 15 题

选择题 · 答案 A

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

题目

在 $64$ 位操作系统下(LP64 / LLP64 模型),下面代码的输出结果是( )。

#include <iostream>
using namespace std;

int main() {
    int a[4] = {1, 2, 3, 4};
    int (*p)[4] = &a;
    int *q = a;

    cout << sizeof(a) << " ";
    cout << sizeof(p) << " ";
    cout << sizeof(p + 1) << " ";
    cout << sizeof(q + 1) << " ";
    cout << (p + 1) - p << " ";
    cout << (q + 1) - q << endl;
}
答案:A

解题思维

模拟程序执行过程,逐行跟踪变量变化,特别关注循环边界和递归终止条件。

常见错误

模拟执行时注意:① 循环变量的起始和终止值;② 递归的边界条件;③ 数据类型转换和精度问题。

详细解析(节选)

【考点】内存布局|指针类型与运算|sizeof 语义

1. 🎯 考纲定位

GESP 八级 C++ 大纲「指针与内存」模块。命题人卡住的就是 90% 考生「sizeof 看类型不看值」的固有误区——看到 p+1 下意识想成「数组大小 16」,而不是「指针类型不变」;p- 与 q- 的减法又混成字节差,其实取的是元素个数差。

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