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

1、第25题 (1.0分) 题号:543 若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5 的语句为()。

A
 printf(”%d”,*(a+5));
B
 printf(”%d”,p[5]);
C
 printf(”%d”,*(p+5));
D
 printf(”%d”,*p[5]);

答案解析

正确答案:D

解析:

**解析:** 本题考查 C 语言中数组与指针的访问方式及运算符优先级。 **1. 初始化分析** * `int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};`:定义了一个整型数组 `a`,其中 `a[0]=0`, `a[1]=1`, ..., `a[5]=5`, ... * `*p = a;`:定义了一个整型指针 `p`,并使其指向数组 `a` 的首地址(即 `p` 等价于 `&a[0]`)。 **2. 选项逐一分析** * **A. `printf("%d", *(a+5));`** * `a` 是数组名,代表数组首元素的地址。 * `a + 5` 表示从首地址向后偏移 5 个整型单位,指向 `a[5]` 的地址。 * `*(a+5)` 对该地址解引用,取出其中的值,即 `a[5]`。 * `a[5]` 的值为 **5**。 * 输出结果为 5。 * **B. `printf("%d", p[5]);`** * 在 C 语言中,指针可以像数组一样使用下标访问。 * `p[5]` 等价于 `*(p + 5)`。 * 因为 `p` 指向 `a[0]`,所以 `p[5]` 访问的是第 6 个元素,即 `a[5]`。 * `a[5]` 的值为 **5**。 * 输出结果为 5。 * **C. `printf("%d", *(p+5));`** * `p` 指向 `a[0]`。 * `p + 5` 指向 `a[5]` 的地址。 * `*(p+5)` 解引用得到 `a[5]` 的值。 * `a[5]` 的值为 **5**。 * 输出结果为 5。 * **D. `printf("%d", *p[5]);`** * 这里涉及运算符优先级问题。下标运算符 `[]` 的优先级高于间接寻址运算符 `*`。 * 因此,表达式 `*p[5]` 等价于 `*(p[5])`。 * 首先计算 `p[5]`:如前所述,`p[5]` 的值是整数 **5**。 * 然后执行 `*(5)`:试图对整数常量 `5` 进行解引用操作。 * **错误分析**:在 C 语言中,`*` 运算符的操作数必须是一个指针类型。这里的 `5` 是一个 `int` 类型的值,而不是地址。这会导致**编译错误**(类型不匹配)或者在允许隐式转换的环境下导致**运行时错误**(访问非法内存地址 0x00000005)。 * 无论哪种情况,它都**无法正确输出整数 5**,甚至程序可能崩溃。因此,它的输出结果肯定不为 5(或者说它根本不是一个合法的输出 5 的语句)。 **结论:** 选项 A、B、C 均能正确输出数组元素 `a[5]` 的值 5。 选项 D 语法错误或逻辑错误,无法输出 5。 故正确答案为 **D**。
题目纠错
c语言选择判断题库

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

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