C语言 能正确对字符串赋值、赋初值的语句组是??

A)chars[]={'a','e','i','o','u'};B)char*s;s="good!";C)chars[5]="good!";D)chars[5];s="g... A) char s[ ]={'a','e','i','o','u'};

B) char *s;s="good!";
C) char s[5]="good!";
D) char s[5];s="good";
答案B。包括其他选项,请高手逐个解释谢谢!
展开
 我来答
风雷九州
推荐于2017-09-04 · TA获得超过3025个赞
知道大有可为答主
回答量:1127
采纳率:100%
帮助的人:431万
展开全部
基础:C语言的字符串以'\0'结束,这个楼主应该明白吧。

A选项
没有结束符'\0',并不是完整的字符串,错误

B选项
“good!”是一个字符串常量(同整型常量一个概念),s指向它的地址,正确

C选项
“good!”占用6个字节,字符5个字节,还有一个字节是结束符'\0',数组空间不够,会发生越界,错误

D选项
语法错误,数组只有定义的时候可以使用=号进行赋值,其他地方不能使用=赋值,只能通过循环一个元素一个元素的赋值
更多追问追答
追问
B中赋的初值又是什么??
追答
char *s;  //这个时候s是一个随机值,初始值不确定

s="good!"; //这个时候s才有确定的值
wuiiao333
2014-12-22 · TA获得超过799个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:206万
展开全部
AB~~~~~~~
A:s[]这样的方式,那么A的数组个数由初始化决定。
//A是正确的,有5个元素,是数组但不是字符串

B:s表示char指针,char指针存储字符数组、字符串地址。
双引号括起来的字符常量实际为第一个字符的地址。所以s存储g的地址,相当于存储字符串的地址。
C:双引号默认最后一个为空字符,所以“good!”一共6个字符。s数组只有5个,存储不了
D:数组名是常量(不是指针名,指针名是变量),常量不能被赋值。

就好比 3=5; 常量3不能被赋值。
更多追问追答
追问
B中赋的初值又是什么??
追答
s是个变量,它存储的是地址。
定义时不初始化的话就是未知数。
相当于int x; x不初始化那就是未知数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengminxiang
2014-12-22 · 超过17用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:46.4万
展开全部
B正确
A)字符串应以'\0'结尾,应改为:char s[ ]={'a','e','i','o','u','\0'};

C)这样赋值编译器会默认在结尾处加'\0',由于指定s只能放5个字符,所以good!后若加'\0'会导致数组越界,应改为:char s[6] = “good!”此时字符串中的值为'g' 'o' 'o' 'd' '\0'
D)char s[5]后面是分号代表语句结束,s = "good"是下一语句的开始,字符串无法以该方式赋值,应改为s[0] = 'g'; s[1] = 'o'; s[2] = 'o'; s[3] = 'd'; s[4] = '\0';
追问
B中赋的初值又是什么??
追答
B中的初值也是'g' 'o' 'o' 'd' '\0',严格来说这不叫赋值,这叫初始化,初始化中编译器都会在末尾加'\0',如果你没有显式初始化'\0'的话
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d580670
2014-12-22 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:703万
展开全部
A B应该都对, C的话会越界放不下, D的话s不允许这样赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式