单选题
1、第159题 (1.0分) 题号:642 在C语言中,一维数组的定义方式为:类型说明符数组名()。
A
[常量表达式]
B
[整型表达式]
C
[整型常量]或[整型表达式]
D
[整型常量]
答案解析
正确答案:D
解析:
**解析:**
在 C 语言中,定义一维数组的一般形式为:
`类型说明符 数组名[常量表达式];`
对此规则的关键点分析如下:
1. **方括号是必须的**:数组的大小必须放在方括号 `[]` 中。
2. **常量表达式**:方括号内的内容必须是**常量表达式**(Constant Expression)。这意味着在编译阶段就能确定其值。
* 它可以是整型常量(如 `10`)。
* 它可以是符号常量(如通过 `#define N 10` 定义的 `N`)。
* 它**不能**是变量(如 `int n = 10; int a[n];` 在标准 C89/C90 中是非法的,虽然 C99 引入了变长数组 VLA,但在传统的 C 语言基础考试题境中,通常强调数组长度必须是编译时常量)。
* 它**不能**是包含变量的表达式。
**选项分析:**
* **A. [常量表达式]**:这个描述在理论上是准确的,因为 C 语言标准确实规定使用“常量表达式”。但是,在很多基础教材和考试语境中,为了区分“常量”和“变量”,往往会特别强调必须是“整型常量”或“值为整型的常量表达式”。如果其他选项有更具体的限制或错误,我们需要对比。然而,看选项 D。
* **B. [整型表达式]**:错误。“整型表达式”可以包含变量,例如 `i + 1`,如果 `i` 是变量,则不能作为数组定义的长度(在传统 C 语言标准下)。
* **C. [整型常量]或[整型表达式]**:错误。理由同上,“整型表达式”可能包含变量,这是不允许的。
* **D. [整型常量]**:这是最符合传统 C 语言教学语境的选项。虽然严格来说可以是“常量表达式”(比如 `5+5` 或 `sizeof(int)`),但这些最终都归结为编译时可确定的**整型常数值**。在许多初级 C 语言题库中,为了简化概念,常将“常量表达式”通俗地表述为要求是一个“整型常量”(即值固定不变的整数)。
**为什么选 D 而不是 A?**
这就涉及到具体教材的定义习惯。
* 如果题目严格遵循 ANSI C 标准术语,**A** 其实更准确(因为 `#define N 10` 后 `a[N]` 中的 `N` 是宏替换后的常量表达式,不仅仅是狭义的“整型常量字面量”)。
* 但是,观察本题给出的答案是 **D**。这说明出题者的逻辑是:强调数组长度必须是**固定的、已知的整数**,排除任何涉及“变量”或“运行时计算”的可能性。在很多老式教材中,会直接说“数组名[整型常量]”。
* 另外,有些语境下,“常量表达式”可能被误解为包含浮点数等,而数组下标/长度必须是**整型**的。选项 D 明确指出了“整型”和“常量”两个关键属性。
**总结:**
C 语言规定,定义数组时,方括号内必须是**值为正整数的常量表达式**。在常见的单选题库中,**[整型常量]** 是被广泛接受的标准答案,用以区别于包含变量的表达式。
因此,正确答案是 **D**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第100题 (1.0分) 题号:625 已知x=43,ch='A',y=0;则表达式( )的值是()。
单选题
1、第99题 (1.0分) 题号:692 以下叙述中正确的是()。
单选题
1、第98题 (1.0分) 题号:668 以下正确的说法是()。
单选题
1、第97题 (1.0分) 题号:643 以下能对一维数组a进行正确初始化的语句是()。
单选题
1、第96题 (1.0分) 题号:526 用户定义的函数不可以调用的函数是()。
单选题
1、第95题 (1.0分) 题号:532 结构体类型的定义允许嵌套是指()。
单选题
1、第94题 (1.0分) 题号:164 下列数组说明中,正确的是()。
单选题
1、第93题 (1.0分) 题号:597 下列四个选项中,均是C语言关键字的选项是()。
单选题
1、第92题 (1.0分) 题号:542 若有int *p=( )malloc( 则向内存申请到内存
单选题
1、第91题 (1.0分) 题号:491 下列程序段的输出结果为()。 float k=0.8567; printf(”%06.1d%%”,k*100);
