#CSPJ26D13. 2026 年 8 月 CSP-J 初赛 22 日打卡 Day13|内存、指针和引用

2026 年 8 月 CSP-J 初赛 22 日打卡 Day13|内存、指针和引用

Day 13 内存、指针和引用

建议用时:15~25 分钟。请先完成自主学习,再独立提交本页答案。

今日学习资料

学习目标:完成当天知识点阅读与易错清单自查,然后作答下方选择题。

今日练习

  1. 在常见的 64 位编译环境下,下列表达式的值 不等于 8 的是( )。

{{ select(1) }}

  • sizeof(double)
  • sizeof(long long)
  • sizeof(char *)
  • sizeof(short)
  1. 某同学在 main 函数内部写下 int a[1000000];,程序一运行就异常退出;把这行移到 main 函数外面后一切正常。最合理的解释是( )。

{{ select(2) }}

  • 函数内部不允许定义数组
  • 局部数组分配在栈区,栈空间很小,装不下 4 MB 的数组
  • 全局数组会被自动压缩,占用的内存更少
  • 局部数组必须显式初始化后才能使用
  1. 有定义 int a = 10; int *p = &a;,则下列说法 错误 的是( )。

{{ select(3) }}

  • *p 的值是 10
  • p 的值是变量 a 的地址
  • 执行 *p = 20; 之后,a 的值变为 20
  • p 本身不占内存,因此 &p 是非法的
  1. 【CSP-J 2025 初赛·第 10 题】考虑以下 C++ 函数:

{{ select(4) }}

  • 10, 5
  • 10, 10
  • 5, 5
  1. 判断题:与指针不同,引用一经初始化就不能再指向其他变量,而且不存在空引用。( )

{{ select(5) }}

  • 正确
  • 错误
  1. 已知 int a[5]; int *p = a;,且 a 的首地址为 0x1000,则 p + 3 的值是( )。

{{ select(6) }}

  • 0x1003
  • 0x100C
  • 0x1012
  • 0x1005
  1. 设有 int a[10]; int *p = a;,下列语句中 不合法 的是( )。

{{ select(7) }}

  • p = p + 1;
  • a = a + 1;
  • p[2] = *(a + 2);
  • cout << *(p + 3);
  1. 阅读第七节给出的完整程序,它输出的 第一行 是( )。

{{ select(8) }}

  • 3 8
  • 8 3
  • 3 3
  • 8 8
  1. 仍然是第七节的程序,它输出的 第三行 是( )。

{{ select(9) }}

  • 8 3
  • 3 8
  • 8 8
  • 程序编译错误
  1. 下列关于动态内存的说法,正确的是( )。

{{ select(10) }}

  • int *p = new int[10]; 之后应当用 delete[] p; 释放
  • new 出来的内存位于栈区,函数返回时自动回收
  • 忘记 delete 不会有任何后果,程序结束前系统会自动补上
  • delete p;delete[] p; 完全等价,可以随意互换