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。包括其他选项,请高手逐个解释谢谢! 展开
B) char *s;s="good!";
C) char s[5]="good!";
D) char s[5];s="good";
答案B。包括其他选项,请高手逐个解释谢谢! 展开
展开全部
基础:C语言的字符串以'\0'结束,这个楼主应该明白吧。
A选项
没有结束符'\0',并不是完整的字符串,错误
B选项
“good!”是一个字符串常量(同整型常量一个概念),s指向它的地址,正确
C选项
“good!”占用6个字节,字符5个字节,还有一个字节是结束符'\0',数组空间不够,会发生越界,错误
D选项
语法错误,数组只有定义的时候可以使用=号进行赋值,其他地方不能使用=赋值,只能通过循环一个元素一个元素的赋值
A选项
没有结束符'\0',并不是完整的字符串,错误
B选项
“good!”是一个字符串常量(同整型常量一个概念),s指向它的地址,正确
C选项
“good!”占用6个字节,字符5个字节,还有一个字节是结束符'\0',数组空间不够,会发生越界,错误
D选项
语法错误,数组只有定义的时候可以使用=号进行赋值,其他地方不能使用=赋值,只能通过循环一个元素一个元素的赋值
更多追问追答
追问
B中赋的初值又是什么??
追答
char *s; //这个时候s是一个随机值,初始值不确定
s="good!"; //这个时候s才有确定的值
展开全部
AB~~~~~~~
A:s[]这样的方式,那么A的数组个数由初始化决定。
//A是正确的,有5个元素,是数组但不是字符串
B:s表示char指针,char指针存储字符数组、字符串地址。
双引号括起来的字符常量实际为第一个字符的地址。所以s存储g的地址,相当于存储字符串的地址。
C:双引号默认最后一个为空字符,所以“good!”一共6个字符。s数组只有5个,存储不了
D:数组名是常量(不是指针名,指针名是变量),常量不能被赋值。
就好比 3=5; 常量3不能被赋值。
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不初始化那就是未知数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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';
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'的话
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A B应该都对, C的话会越界放不下, D的话s不允许这样赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询