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

1、第16题 (1.0分) 题号:711 下列选项中正确的语句组是()。

A
 char s[8]; s[8]={“Beijing”};
B
 char *s; s={“Beijing”};
C
 char s[8]; s=“Beijing”;
D
 char *s; s=“Beijing”;

答案解析

正确答案:D

解析:

这道题考查的是 C 语言中**字符数组**与**字符指针**在初始化和赋值时的区别。我们需要逐一分析每个选项的语法正确性。 ### 选项分析 **A. `char s[8]; s[8]={“Beijing”};`** * **错误**。 * `s[8]` 表示数组 `s` 的第 9 个元素(下标从 0 开始,0-7 为有效范围,8 已越界)。 * 更重要的是,数组名 `s` 或数组元素不能作为左值接受 `{...}` 这种初始化列表形式的赋值。初始化列表只能在定义变量时使用(如 `char s[8] = {"Beijing"};`),而不能在定义之后单独作为赋值语句使用。 **B. `char *s; s={“Beijing”};`** * **错误**。 * `s` 是一个字符指针变量。虽然 `"Beijing"` 是一个字符串常量,但在 C 语言中,`{...}` 是聚合初始化器的语法,只能用于变量定义时的初始化,不能用于后续的赋值操作。 * 正确的写法应该是 `s = "Beijing";`(去掉花括号)。 **C. `char s[8]; s=“Beijing”;`** * **错误**。 * `s` 是数组名。在 C 语言中,**数组名是一个常量指针**,指向数组首元素的地址。它不能被重新赋值。 * 也就是说,你不能改变数组名 `s` 本身的值(即不能让它指向别的内存地址)。如果要给字符数组赋值字符串,需要使用 `strcpy(s, "Beijing");` 或者在定义时初始化 `char s[8] = "Beijing";`。 **D. `char *s; s=“Beijing”;`** * **正确**。 * `s` 是一个字符指针变量。 * `"Beijing"` 是一个字符串常量,存储在静态存储区,它本身代表该字符串首字符 `'B'` 的地址。 * 语句 `s = "Beijing";` 的含义是将字符串常量的首地址赋值给指针变量 `s`。这是完全合法的 C 语言操作。此时 `s` 指向了字符串常量 `"Beijing"`。 ### 总结 * **字符数组**:定义后可以修改数组内部的内容(通过下标或字符串拷贝函数),但**数组名本身不能赋值**(不能改变指向)。 * **字符指针**:是一个变量,可以随意改变其指向(即可以赋值不同的字符串常量地址)。 因此,正确答案是 **D**。
题目纠错
c语言选择判断题库

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

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