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

1、第63题 (1.0分) 题号:524 与实际参数为实型数组名相对应的形式参数不可以定义为()。

A
 float a[];
B
 float *a;
C
 float a;
D
 float (*a)[3];

答案解析

正确答案:C

解析:

### 题目解析 **正确答案:C** #### 1. 核心考点 本题主要考查 C 语言中**数组名作为函数参数传递时的机制**,以及**形式参数(形参)与实在参数(实参)的类型匹配规则**。 在 C 语言中,当数组名作为实参传递给函数时,实际上传递的是**数组首元素的地址**(即指针)。因此,对应的形参必须能够接收这个地址。 #### 2. 选项逐一分析 * **A. `float a[];`** * **分析**:在函数参数列表中,`float a[]` 等价于 `float *a`。它表示 `a` 是一个指向 `float` 类型数据的指针。 * **结论**:可以接收实型数组名(即首地址),**合法**。 * **B. `float *a;`** * **分析`**:明确声明 `a` 是一个指向 `float` 类型的指针。数组名退化为指向其第一个元素的指针,类型完全匹配。 * **结论**:可以接收实型数组名,**合法**。 * **C. `float a;` * **分析**这里声明 `a` 是一个普通的**浮点型变量**,而不是指针或数组。 * **冲突点**:实参传递的是“地址”(指针类型),而形参期望的是“值”(float 类型)。C 语言中不能直接将一个指针赋值给一个非指针的基本数据类型变量(除非进行强制类型转换,但这会导致逻辑错误且通常编译器会报错或警告类型不兼容)。更重要的是,语义上完全不通:你不能用一个标量变量去接收一个数组的起始地址来进行数组操作。 * **结论**:类型不匹配,**不可以**定义为该形式。 * **D. `float (*a)[3];`** * **分析**:这是一个**数组指针**,指向一个包含 3 个 `float` 元素的一维数组。 * **特殊情况说明**:虽然通常一维数组名对应的是 `float *`,但如果实参是二维数组的行名,或者在某些特定语境下(如指向数组的指针),这种定义在语法上是用于接收地址的。 * **对比排除**:题目问的是“不可以定义为”。相比之下,C 选项是绝对错误的类型不匹配(指针 vs 标量)。D 选项至少是一个指针类型,能够接收地址。*注:严格来说,如果实参是一维数组名 `float arr[10]`,传给 `float (*a)[3]` 也会类型不兼容(`float*` vs `float(*)[3]`),但在单选题中,C 选项的错误是最根本、最明显的(类型类别都不同:指针型 vs 基本数据类型)。通常这类题目中,D 选项可能暗示实参是某种特定结构的数组,或者出题意图在于区分“指针/数组形参”与“普通变量形参”。但在标准一维数组传参语境下,C 是绝对错误的,因为它是非指针类型。* * **更严谨的解释**:题目问的是“与实际参数为实型数组名相对应”。 * 若实参是 `float arr[10]`,传参时退化爲 `float*`。 * A (`float[]`) -> `float*`,匹配。 * B (`float*`) -> `float*`,匹配。 * D (`float(*)[3]`) -> 这是指向数组的指针。如果实参是二维数组 `float arr[2][3]`,调用时传 `arr` (类型 `float(*)[3]`),则 D 是匹配的。如果实参是一维数组,D 不匹配。 * C (`float`) -> 基本类型,永远无法匹配数组名(地址)。 * 因此,无论实参是一维还是多维数组名,它本质上都是一个**地址**。C 选项不是指针类型,无法接收地址。所以 C 是绝对不可以的。 #### 3. 总结 数组名作实参时,传递的是**地址**。因此,形参必须是**指针**或**数组**形式。 * `float a[]` 和 `float *a` 都是指针形式,合法。 * `float (*a)[3]` 也是指针形式(数组指针),在特定数组维度下合法。 * `float a` 是普通变量,不能接收地址,**非法**。 故答案选 **C**。
题目纠错
c语言选择判断题库

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

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