AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

1、第294题 (1.0分) 题号:165 下列定义数组的语句中正确的是()。

A
 #define size 10 char str1[size],str2[size+2];
B
 char str[];
C
 int num['10'];
D
 int n=5; int a[n][n+2];

答案解析

正确答案:A

解析:

这道题考查的是 C 语言中数组定义的基本规则。我们需要逐一分析每个选项,判断其是否符合 C 语言的语法规范(特别是关于数组大小必须是常量表达式的要求)。 **正确答案:A** ### 详细解析: **1. 选项 A:`#define size 10 char str1[size],str2[size+2];`** * **分析**:这是**正确**的。 * `#define size 10` 是预处理指令,它会将源代码中所有的 `size` 替换为 `10`。 * 在编译阶段,编译器看到的实际上是 `char str1[10], str2[10+2];`。 * `10` 和 `10+2`(即 12)都是整型常量表达式。在 C 语言中,定义数组时,方括号内的大小必须是一个**常量表达式**(Constant Expression)。宏定义产生的值被视为常量,因此这种定义方式是合法且标准的。 **2. 选项 B:`char str[];`** * **分析**:这是**错误**的。 * 如果在定义数组时省略了数组长度(方括号为空),则必须在定义的同时进行**初始化**,以便编译器根据初始值的个数自动推断数组长度。 * 例如:`char str[] = "hello";` 是合法的。 * 但选项中只有声明 `char str[];` 而没有初始化,编译器无法确定需要分配多少内存空间,因此报错。 **3. 选项 C:`int num['10'];`** * **分析**:这是**错误**的。 * 这里的 `'10'` 写法本身就有问题。在 C 语言中,单引号 `' '` 用于表示**字符常量**,且只能包含一个字符(或者转义字符)。`'10'` 包含了两个字符,这在标准 C 中是非法的多字符常量(Multi-character character constant),虽然某些编译器可能允许并给出警告,但其行为是实现定义的,且通常不是预期的整数 10。 * 即使假设意图是写数字 `10`,也不应加单引号。如果意图是字符 `'1'`,其 ASCII 码值为 49,虽然语法上 `int num[49]` 是合法的,但原题写法 `'10'` 是不规范的字符常量表示,通常被视为语法错误或严重警告,不属于“正确”的定义方式。更常见的错误陷阱是混淆字符串 `"10"` 和字符 `'1'` 或数字 `10`。 **4. 选项 D:`int n=5; int a[n][n+2];`** * **分析**:在标准 C89/C90 中是**错误**的;在 C99 及以后标准中是合法的(变长数组 VLA),但在传统考试题境下通常视为错误。 * **传统 C 语言规则(C89)**:数组的大小必须是**编译时常量**。变量 `n` 是在运行时赋值的,不是编译时常量,因此不能用来定义数组大小。 * **C99 标准**:引入了变长数组(VLA),允许使用变量定义数组大小。但是,许多教材和考试题目基于经典的 C89 标准或为了考察“常量表达式”这一核心概念,通常将使用变量定义数组视为错误。 * **对比选项 A**:选项 A 使用宏定义,在任何 C 标准下都是绝对合法且安全的常量表达式用法。相比之下,D 选项依赖于特定的 C 标准版本,且在嵌入式或某些编译器设置下可能不被支持。因此,在单选题中,A 是无可争议的最佳答案。 ### 总结: * **核心考点**:C 语言数组定义时,数组长度必须是**常量表达式**。 * **宏定义 (`#define`)** 生成的标识符在预处理阶段被替换为字面量,属于常量表达式,符合要求。 * **变量**(如选项 D 中的 `n`)在传统 C 语言中不能作为数组长度。 * **未初始化的空数组**(如选项 B)是非法的。 因此,最符合规范且无歧义的正确选项是 **A**。
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码