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

1、第116题 (1.0分) 题号:707 若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是()。

A
 p1=&m;p2=&p1
B
 p1=&m;p2=&n;*p1=*p2;
C
 p1=&m;p2=p1;
D
 p1=&m;*p2=*p1;

答案解析

正确答案:C

解析:

**正确答案:C** **解析:** 首先分析题目中定义的变量: * `int *p1, *p2`:定义了两个指向整型数据的指针变量 `p1` 和 `p2`。 * `int m=5, n`:定义了两个整型变量 `m`(初始化为5)和 `n`(未初始化)。 接下来逐项分析各选项的正确性: * **A. `p1=&m; p2=&p1;`** * `p1=&m;` 是正确的,将 `m` 的地址赋给指针 `p1`。 * `p2=&p1;` 是**错误**的。`p1` 本身是一个指针变量(类型为 `int *`),`&p1` 获取的是指针变量 `p1` 自身的地址,其类型应为二级指针(`int **`)。而 `p2` 定义为一级指针(`int *`),类型不匹配,不能直接赋值。 * **B. `p1=&m; p2=&n; *p1=*p2;`** * `p1=&m;` 正确。 * `p2=&n;` 正确,将 `n` 的地址赋给 `p2`。 * `*p1=*p2;` 虽然语法上合法,但存在逻辑风险。变量 `n` 只是声明了但未初始化,其值是未知的(垃圾值)。`*p2` 读取的是 `n` 的值,将其赋给 `*p1`(即 `m`)。虽然这在C语言语法中不算“错误语句”,但在严格的编程规范或某些编译器警告级别下,使用未初始化的变量通常被视为不良实践。不过,更关键的判断依据通常在于D选项的明显错误和C选项的绝对正确性。如果在单选题中寻找“均正确且无隐患”的选项,我们需要对比其他项。让我们先看C和D。 * **C. `p1=&m; p2=p1;`** * `p1=&m;` 正确,`p1` 指向 `m`。 * `p2=p1;` **正确**。这是指针之间的赋值。它将 `p1` 中存储的地址(即 `m` 的地址)拷贝给 `p2`。执行后,`p1` 和 `p2` 都指向变量 `m`。这是完全合法且常见的指针操作。 * **D. `p1=&m; *p2=*p1;`** * `p1=&m;` 正确。 * `*p2=*p1;` 是**错误**的(会导致运行时错误/未定义行为)。`p2` 被定义后**没有初始化**,它是一个野指针,指向内存中的随机位置。`*p2` 试图向这个随机地址写入数据(`*p1` 的值,即5),这会导致程序崩溃或不可预知的后果。在使用指针间接引用(解引用)之前,必须确保指针已经指向了一个合法的、已分配的内存地址。 **总结:** * A 选项类型不匹配。 * D 选项使用了未初始化的野指针,严重错误。 * B 选项使用了未初始化的变量 `n` 的值,虽然语法通过,但不如 C 选项严谨和规范。 * C 选项所有操作均符合语法规则且逻辑安全。 因此,最合适的选项是 **C**。
题目纠错
c语言选择判断题库

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

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