推荐答案
测试一下
题目
以下C语言声明语句,其中阐述正确的是
A、第一条语句声明x是个int类型的指针
B、第一条语句声明x是个int类型的数据
C、第二条语句声明y是个int类型数组,长度未确定
D、第二条语句声明y是个int类型数组,长度确定
参考答案与知识点
参考答案
正确选项为A和C。
解析:
- 第一条语句 `extern int *x;` 声明了标识符 `x` 是一个指针,该指针指向 `int` 类型的数据。`extern` 关键字表示这是一个外部声明,不分配存储空间,但明确指定了 `x` 的类型是 `int*`(指向整型的指针)。因此选项A正确,选项B错误(B误将指针解释为整型数据)。
- 第二条语句 `extern int y[];` 声明了标识符 `y` 是一个 `int` 类型的数组,但未指定数组长度。在C语言中,这种不完整类型的数组声明允许在定义时再确定长度,或者由外部定义提供。因此选项C正确,选项D错误(D声称长度确定,与声明未指定长度矛盾)。
易错点:
1. `extern` 关键字不影响类型本身,仅改变链接属性和存储类别,指针声明仍明确为指针类型。
2. 数组声明中省略长度表示不完整类型,仅当定义或后续初始化时才得知大小。
3. 注意区分“声明”与“定义”:声明仅引入类型和名字,不分配空间;定义会分配空间并可能指定大小。
涉及知识点
- extern关键字的作用
- 指针的声明与类型识别
- 数组声明中省略长度的含义
- 不完整类型与完整类型