#CSPJ26D18. 2026 年 8 月 CSP-J 初赛 20 日打卡 Day18|内存、地址与指针
2026 年 8 月 CSP-J 初赛 20 日打卡 Day18|内存、地址与指针
Day 18 内存、地址与指针
建议用时:22~28 分钟。请先打开今日知识卡完成复习,再独立提交本页答案。
今日学习资料
复习目标:分清变量值、变量地址和指针中保存的地址,掌握取地址、解引用、指针赋值、数组指针和链表头插。
今日练习
-
【CSP-J 2022·第 3 题】运行以下代码片段的行为是( )。
int x = 101; int y = 201; int *p = &x; int *q = &y; p = q;
{{ select(1) }}
- 将
x的值赋为 201 - 将
y的值赋为 101 - 将
q指向x的地址 - 将
p指向y的地址
-
【CSP-J 2023·第 4 题】已知链表节点定义如下,并有指向链表头部的指针
Node *head。要插入一个data为 42 的新节点,并使新节点成为第一个节点,正确操作是( )。struct Node { int data; Node *next; };
{{ select(2) }}
Node* newNode = new Node; newNode->data = 42; newNode->next = head; head = newNode;Node* newNode = new Node; head->data = 42; newNode->next = head; head = newNode;Node* newNode = new Node; newNode->data = 42; head->next = newNode;Node* newNode = new Node; newNode->data = 42; newNode->next = head;
-
执行下面的代码后,
a的值是( )。int a = 7; int *p = &a; *p = 12;
{{ select(3) }}
- 7
- 12
a的地址- 无法确定
- 【CSP-J 2022·第 4 题】链表和数组的区别包括( )。
{{ select(4) }}
- 数组不能排序,链表可以
- 链表比数组能存储更多的信息
- 数组大小固定,链表大小可动态调整
- 以上均正确
- 关于
int *p = nullptr;,下列说法正确的是( )。
{{ select(5) }}
p当前不指向有效的int对象*p的值一定为 0- 可以安全执行
*p = 5 p是一个普通整数变量
主题程序阅读
阅读下面的程序:
#include <iostream>
using namespace std;
int main() {
int a[4] = {2, 4, 6, 8};
int *p = a;
int *q = p + 2;
*p = *q;
q = p + 3;
*q += a[1];
cout << a[0] << ' ' << a[2] << ' ' << a[3] << endl;
return 0;
}
- 执行
int *q = p + 2;后,q指向( )。
{{ select(6) }}
a[0]a[1]a[2]a[3]
- 执行
*p = *q;后,a[0]的值是( )。
{{ select(7) }}
- 2
- 4
- 6
- 8
- 程序最终输出( )。
{{ select(8) }}
6 6 86 6 122 6 126 4 12