题目
一、单选题(共40题,40.0分)题型说明:单选题共40分,每小题1分22.(单选题,1.0分)设int a[5]=(1,2,3);,则a[4]的值是()。A 语法错误[1]B 0C 3D 随机值
一、单选题(共40题,40.0分)
题型说明:单选题共40分,每小题1分
22.(单选题,1.0分)
设int a[5]={1,2,3};,则a[4]的值是()。
A 语法错误[1]
B 0
C 3
D 随机值
题目解答
答案
根据C语言数组初始化规则,`int a[5] = {1, 2, 3};` 中,未显式初始化的元素(即 `a[3]` 和 `a[4]`)会被自动初始化为 0。因此,`a[4]` 的值为 0。
- `a[0] = 1`
- `a[1] = 2`
- `a[2] = 3`
- `a[3] = 0`
- `a[4] = 0`
答案:B 0
解析
本题考查C语言数组初始化规则。关键点在于理解当数组元素数量少于数组长度时,未显式赋值的元素会被自动初始化为0。需注意区分静态初始化与动态内存分配(如malloc)的不同行为。
数组初始化规则
- 定义数组时若使用大括号
{}显式赋值,未被赋值的元素默认为0。 - 例如,
int a[5] = {1, 2, 3};中:a[0] = 1,a[1] = 2,a[2] = 3a[3]和a[4]未被赋值,因此均为0。
选项分析
- A. 语法错误:错误。C语言允许部分初始化,不会报错。
- B. 0:正确。
a[4]未被显式赋值,自动初始化为0。 - C. 3:错误。
a[2]的值是3,但a[4]与a[2]无关。 - D. 随机值:错误。静态初始化时未赋值元素不会保留随机值。