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