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

1、第156题 (1.0分) 题号:653 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。

A
 char s[10]=“abcdefg”;
B
 char t[]=“abcdefg”,*s=t;
C
 char s[10];s=“abcdefg”;
D
 char s[10];strcpy(s,”abcdefg”);

答案解析

正确答案:C

解析:

**正确答案:C** ### 解析: 本题考查 C 语言中字符数组的初始化与赋值规则,特别是数组名作为左值的特性。 1. **选项 A:`char s[10]="abcdefg";`** * **正确**。这是在定义字符数组时进行**初始化**。C 语言允许在定义数组时使用字符串常量进行初始化,编译器会将字符串 `"abcdefg"`(包括结尾的 `\0`)复制到数组 `s` 中。只要数组长度足够容纳字符串(这里长度为 10,字符串占 8 字节),就是合法的。 2. **选项 B:`char t[]="abcdefg",*s=t;`** * **正确**。 * `char t[]="abcdefg"`:定义并初始化字符数组 `t`。 * `*s=t`:定义字符指针 `s`,并将数组 `t` 的首地址赋给指针 `s`。在 C 语言中,数组名在表达式中代表数组首元素的地址,因此将数组名赋给同类型的指针是合法的操作。 3. **选项 C:`char s[10]; s="abcdefg";`** * **错误**。 * `char s[10];` 定义了一个字符数组。 * `s="abcdefg";` 试图将字符串常量 `"abcdefg"` 的地址赋给数组名 `s`。 * **核心原因**:在 C 语言中,**数组名是一个常量指针**(即地址常量),它指向数组分配内存的首地址。数组名不能作为左值被修改,也就是说,你不能改变数组名所代表的地址。因此,不能使用赋值运算符 `=` 直接将字符串或地址赋给已经定义好的数组名。若要给已定义的数组赋值字符串,必须使用 `strcpy` 函数或逐个字符赋值。 4. **选项 D:`char s[10]; strcpy(s,"abcdefg");`** * **正确**。 * `strcpy` 是标准库函数 `` 中的字符串复制函数。 * 它将源字符串 `"abcdefg"` 的内容逐个字符复制到目标数组 `s` 指向的内存空间中。这是给已定义的字符数组赋值字符串的标准方法之一。 ### 总结: * **初始化时**:可以使用 `=` 配合字符串常量(如选项 A)。 * **定义后赋值**: * 不能直接用 `=` 给数组名赋值(如选项 C,编译报错)。 * 可以使用 `strcpy` 函数(如选项 D)。 * 可以将数组地址赋给指针变量(如选项 B)。 因此,不能正确赋字符串且编译时会提示错误的是 **C**。
题目纠错
c语言选择判断题库

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

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