题目
若有定义int a[5];,则对a数组元素或地址的引用错误的有 ()A. &a[5]B. a[2]C. a++D. *aE. a[0]
若有定义int a[5];,则对a数组元素或地址的引用错误的有 ()
A. &a[5]
B. a[2]
C. a++
D. *a
E. a[0]
题目解答
答案
AC
A. &a[5]
C. a++
A. &a[5]
C. a++
解析
步骤 1:分析选项 A
- 选项 A 中的 &a[5] 表示数组 a 的第 6 个元素的地址。然而,数组 a 只有 5 个元素,索引范围为 0 到 4,因此 a[5] 是越界访问,是错误的。
步骤 2:分析选项 B
- 选项 B 中的 a[2] 表示数组 a 的第 3 个元素。这是合法的,因为索引 2 在数组 a 的有效范围内。
步骤 3:分析选项 C
- 选项 C 中的 a++ 表示对数组 a 的地址进行自增操作。然而,数组名 a 代表的是一个常量地址,不能进行自增操作,因此这是错误的。
步骤 4:分析选项 D
- 选项 D 中的 *a 表示数组 a 的第一个元素的值。这是合法的,因为 *a 等价于 a[0]。
步骤 5:分析选项 E
- 选项 E 中的 a[0] 表示数组 a 的第一个元素。这是合法的,因为索引 0 在数组 a 的有效范围内。
- 选项 A 中的 &a[5] 表示数组 a 的第 6 个元素的地址。然而,数组 a 只有 5 个元素,索引范围为 0 到 4,因此 a[5] 是越界访问,是错误的。
步骤 2:分析选项 B
- 选项 B 中的 a[2] 表示数组 a 的第 3 个元素。这是合法的,因为索引 2 在数组 a 的有效范围内。
步骤 3:分析选项 C
- 选项 C 中的 a++ 表示对数组 a 的地址进行自增操作。然而,数组名 a 代表的是一个常量地址,不能进行自增操作,因此这是错误的。
步骤 4:分析选项 D
- 选项 D 中的 *a 表示数组 a 的第一个元素的值。这是合法的,因为 *a 等价于 a[0]。
步骤 5:分析选项 E
- 选项 E 中的 a[0] 表示数组 a 的第一个元素。这是合法的,因为索引 0 在数组 a 的有效范围内。