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

1、第102题 (1.0分) 题号:544 char *s1=“hello”,*s2;s2=s1;则()。

A
 s2指向不确定的内存单元
B
 不能访问”hello”
C
 puts(s1);与puts(s2);结果相同
D
 s1不能再指向其它单元

答案解析

正确答案:C

解析:

这是一道关于 C 语言指针基础知识的题目。我们需要分析代码 `char *s1="hello", *s2; s2=s1;` 的执行过程及结果,从而判断各个选项的正确性。 ### 代码分析 1. **`char *s1 = "hello";`** * 定义了一个字符指针变量 `s1`。 * 字符串常量 `"hello"` 存储在静态存储区(只读数据区)。 * `s1` 被初始化为指向该字符串常量的首地址(即字符 `'h'` 的地址)。 2. **`*s2;`** * 定义了一个字符指针变量 `s2`,此时 `s2` 未初始化,其值是不确定的(野指针)。 3. **`s2 = s1;`** * 将指针 `s1` 的值(即 `"hello"` 的首地址)赋值给指针 `s2`。 * 执行后,`s2` 也指向了字符串常量 `"hello"` 的首地址。 * 此时,`s1` 和 `s2` 指向内存中的同一个位置。 ### 选项逐一解析 * **A. s2指向不确定的内存单元** * **错误**。在执行 `s2 = s1;` 之后,`s2` 明确指向了 `s1` 所指向的地址,即字符串 `"hello"` 的起始位置。只有在定义 `s2` 后、赋值前,`s2` 才指向不确定单元。题目问的是整个语句执行后的状态。 * **B. 不能访问”hello”** * **错误**。`s1` 和 `s2` 都指向 `"hello"`,可以通过 `*s1`、`*s2` 或者以它们为参数的字符串处理函数(如 `printf`, `puts`)来访问该字符串的内容。 * **C. puts(s1);与puts(s2);结果相同** * **正确**。 * `puts()` 函数的作用是输出一个字符串并换行,它接收一个指向字符串首字符的指针作为参数。 * 因为 `s1` 和 `s2` 指向同一个字符串 `"hello"` 的首地址,所以 `puts(s1)` 会输出 `hello`,`puts(s2)` 也会输出 `hello`。两者的输出结果完全相同。 * **D. s1不能再指向其它单元** * **错误**。`s1` 是一个指针变量,变量的值是可以改变的。虽然它当前指向字符串常量,但我们可以随时通过赋值操作让 `s1` 指向其他合法的内存地址(例如 `s1 = "world";` 或 `s1 = s2;` 等)。这里并没有任何机制锁定 `s1` 使其不可变。 ### 结论 综上所述,只有选项 C 描述是正确的。 **正确答案:C**
题目纠错
c语言选择判断题库

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

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