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

1、〖第4题〗700) 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下

A
 c=*p1+*p2;
B
 p2=c;
C
 p1=p2;
D
 c=*p1*(*p2);

答案解析

正确答案:B

解析:

这道题考查的是 C 语言中**指针变量**与**字符变量**之间的类型兼容性及赋值规则。 ### 核心知识点 1. **指针变量 (`p1`, `p2`)**:存储的是内存地址。在本题中,它们指向字符串,因此它们的类型通常是 `char *`。 2. **字符变量 (`c`)**:存储的是具体的字符值(本质上是整数 ASCII 码),类型是 `char`。 3. **赋值兼容性**: * 指针只能赋给指针(或整型,但不推荐且可能有警告)。 * 字符/整型只能赋给字符/整型。 * **不能直接将一个字符值(`char`)赋给一个指针变量(`char *`)**,除非进行强制类型转换,否则编译器会报错或发出严重警告,因为类型不匹配。 ### 选项逐一分析 * **A. `c = *p1 + *p2;`** * `*p1` 和 `*p2` 分别取出指针指向的字符(`char` 类型)。 * 两个字符相加,结果是整数(`int` 类型,ASCII 码之和)。 * 将整数结果赋值给字符变量 `c`,会发生隐式类型转换(截断高位),这是**合法**的操作。 * **结论:语法正确。** * **B. `p2 = c;`** * `p2` 是一个指针变量(`char *`),期望接收一个地址。 * `c` 是一个字符变量(`char`),存储的是一个数值。 * 试图将一个字符值直接赋给指针变量,**类型不匹配**。在标准 C 语言中,这会导致编译错误("assignment makes pointer from integer without a cast")。 * **结论:语法错误。** * **C. `p1 = p2;`** * `p1` 和 `p2` 都是同类型的指针变量(`char *`)。 * 指针之间可以相互赋值,表示让 `p1` 也指向 `p2` 所指向的地址。 * **结论:语法正确。** * **D. `c = *p1 * (*p2);`** * `*p1` 和 `*p2` 取出字符。 * 两个字符相乘,结果是整数。 * 将整数结果赋值给字符变量 `c`,同样发生隐式转换,这是**合法**的操作。 * **结论:语法正确。** ### 题目逻辑推断 题目问法通常是:“以下**不正确**的是?” 或者 “以下**错误**的是?” 虽然用户提供的题干只写了“则以下”,没有明确写出问句,但根据给出的答案 **B**,我们可以反推题目的意图是选出**语法错误**或**非法**的一项。 * A、C、D 均为合法的 C 语言语句。 * B 是非法的赋值操作(类型不匹配)。 因此,正确答案选 **B**,因为它是唯一错误的语句。 ### 最终解析总结 * **A 项**:合法。解引用指针得到字符,字符相加后赋值给字符变量。 * **B 项**:**非法**。不能将字符型变量直接赋值给指针型变量,类型不兼容。 * **C 项**:合法。同类型指针之间可以相互赋值。 * **D 项**:合法。解引用指针得到字符,字符相乘后赋值给字符变量。 故本题选 **B**(即找出错误的选项)。
题目纠错
c语言选择判断题库

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

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