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

1、第177题 (1.0分) 题号:716 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。

A
 p=1;
B
 *q=2;
C
 q=p;
D
 *p=5;

答案解析

正确答案:D

解析:

**解析:** 首先分析题目中变量的定义和类型: 1. `int n = 0;`:定义了一个整型变量 `n`,初值为 0。 2. `int *p = &n;`:定义了一个指向整型的指针变量 `p`,并将其初始化为 `n` 的地址。此时 `p` 的类型是 `int *`,`*p` 等价于 `n`。 3. `int **q = &p;`:定义了一个指向指针的指针变量 `q`(二级指针),并将其初始化为 `p` 的地址。此时 `q` 的类型是 `int **`,`*q` 等价于 `p`,`**q` 等价于 `*p` 即 `n`。 接下来逐项分析选项: * **A. `p=1;`** * `p` 是一个指针变量(`int *`),它应该存储内存地址。虽然在一些编译器中整数可以强制转换为地址,但在标准 C 语言语境下,直接将整数常量 `1` 赋值给指针通常被视为非法或不安全的操作(除非显式强制转换,且 1 通常不是有效的可访问内存地址)。更重要的是,这与题目考察的指针解引用逻辑不符,通常被认为是错误的赋值方式。 * **B. `*q=2;`** * `q` 是 `int **` 类型,`*q` 解引用一次后得到的是 `p`(类型为 `int *`)。 * 因此,`*q = 2;` 相当于 `p = 2;`。 * 同选项 A,将整数 `2` 直接赋值给指针变量 `p` 是不正确的,类型不匹配(`int *` vs `int`)。 * **C. `q=p;`** * `q` 的类型是 `int **`(指向指针的指针)。 * `p` 的类型是 `int *`(指向整数的指针)。 * 两者类型不同,不能直接赋值。`q` 应该存放指针的地址(即 `int *` 类型的变量的地址),而 `p` 存放的是整数的地址。 * **D. `*p=5;`** * `p` 指向 `n`(`p = &n`)。 * `*p` 表示对指针 `p` 进行解引用,访问其所指向的内存空间,也就是变量 `n`。 * 因此,`*p = 5;` 等价于 `n = 5;`。 * `n` 是 `int` 类型,`5` 是 `int` 类型,类型匹配,赋值合法且正确。 **结论:** 只有选项 D 是类型匹配且语义正确的赋值语句。 **正确答案:D**
题目纠错
c语言选择判断题库

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

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