#CSPJ26D13. 2026 年 8 月 CSP-J 初赛 22 日打卡 Day13|内存、指针和引用
2026 年 8 月 CSP-J 初赛 22 日打卡 Day13|内存、指针和引用
Day 13 内存、指针和引用
建议用时:15~25 分钟。请先完成自主学习,再独立提交本页答案。
今日学习资料
学习目标:完成当天知识点阅读与易错清单自查,然后作答下方选择题。
今日练习
- 在常见的 64 位编译环境下,下列表达式的值 不等于 8 的是( )。
{{ select(1) }}
- sizeof(double)
- sizeof(long long)
- sizeof(char *)
- sizeof(short)
- 某同学在
main函数内部写下int a[1000000];,程序一运行就异常退出;把这行移到main函数外面后一切正常。最合理的解释是( )。
{{ select(2) }}
- 函数内部不允许定义数组
- 局部数组分配在栈区,栈空间很小,装不下 4 MB 的数组
- 全局数组会被自动压缩,占用的内存更少
- 局部数组必须显式初始化后才能使用
- 有定义
int a = 10; int *p = &a;,则下列说法 错误 的是( )。
{{ select(3) }}
*p的值是 10p的值是变量 a 的地址- 执行
*p = 20;之后,a 的值变为 20 - p 本身不占内存,因此
&p是非法的
- 【CSP-J 2025 初赛·第 10 题】考虑以下 C++ 函数:
{{ select(4) }}
- 10, 5
- 10, 10
- 5, 5
- 判断题:与指针不同,引用一经初始化就不能再指向其他变量,而且不存在空引用。( )
{{ select(5) }}
- 正确
- 错误
- 已知
int a[5]; int *p = a;,且a的首地址为0x1000,则p + 3的值是( )。
{{ select(6) }}
- 0x1003
- 0x100C
- 0x1012
- 0x1005
- 设有
int a[10]; int *p = a;,下列语句中 不合法 的是( )。
{{ select(7) }}
p = p + 1;a = a + 1;p[2] = *(a + 2);cout << *(p + 3);
- 阅读第七节给出的完整程序,它输出的 第一行 是( )。
{{ select(8) }}
- 3 8
- 8 3
- 3 3
- 8 8
- 仍然是第七节的程序,它输出的 第三行 是( )。
{{ select(9) }}
- 8 3
- 3 8
- 8 8
- 程序编译错误
- 下列关于动态内存的说法,正确的是( )。
{{ select(10) }}
int *p = new int[10];之后应当用delete[] p;释放new出来的内存位于栈区,函数返回时自动回收- 忘记
delete不会有任何后果,程序结束前系统会自动补上 delete p;与delete[] p;完全等价,可以随意互换