HM059 野指针巡检
HM059 野指针巡检
来源: 第 59 集 指针-野指针
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
野指针指的是:指针变量指向了一块**非法**内存,也就是我们没有申请、因而没有权利操纵的空间。它和空指针不同——空指针明确指向编号 \(0\);野指针则是随便指向某个十六进制地址,例如把字面量 0x1100 强转成 int *。这样写语法往往能通过编译,编译器检测不出问题,但运行时一旦解引用,就会因为没有访问权限而出错。
空指针和野指针有一个共同点:指向的都不是自己申请的空间,因此都不要随意访问。程序中应尽量避免出现野指针。
现在已经申请到一段连续合法地址 \([L,R]\)(闭区间),其中地址 \(L+i\) 存放第 \(i\) 个整数(\(i\) 从 \(0\) 开始)。读入这段区间上的全部取值,再处理若干次地址查询:
- 地址为 \(0\):这是空指针,不是自己申请的空间,输出
NULL,不解引用; - 地址落在 \([L,R]\):这是已申请空间,输出该地址上的整数;
- 其余地址:这是野指针(包括把
0x1100这类编号强转成指针的情况),输出WILD,不解引用。
输入格式
第一行两个整数 \(L\)、\(R\)(\(1 \le L \le R \le 10^9\),且 \(R-L+1 \le 100\)),表示已申请的合法地址闭区间。
第二行 \(R-L+1\) 个整数,依次为地址 \(L,L+1,\ldots,R\) 上存放的值,每个整数的绝对值不超过 \(10^9\)。
第三行一个整数 \(q\)(\(1 \le q \le 100\))。
接下来 \(q\) 行,每行一个整数 \(addr\)(\(0 \le addr \le 10^9\)),表示一次查询的地址编号。
输出格式
共 \(q\) 行,每行一个结果:
- 若 \(addr=0\),输出
NULL; - 若 \(L \le addr \le R\),输出该地址上的整数;
- 否则输出
WILD。
每行末尾换行。
样例
输入 #1
1000 1002
7 8 9
3
0
1001
4352
输出 #1
NULL
8
WILD
输入 #2
10 10
42
2
10
11
输出 #2
42
WILD
说明
样例 1 已申请 \([1000,1002]\)。地址 \(0\) 是空指针。地址 \(1001\) 合法,值为 \(8\)。\(4352\) 即十六进制 0x1100,并未申请,属于野指针。样例 2 只申请了地址 \(10\),地址 \(11\) 越界,同样是野指针。
信息
- ID
- 1058
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者