关于字符数组的赋值问题!

17.不能把字符串Hello!赋给数组b的语句是()。A.charb[10]={'H','e','l','l','o','!'};B.charb[10];b="Hello... 17. 不能把字符串Hello!赋给数组b的语句是( )。 A. char b[10]={'H' , 'e' , 'l' , 'l' , 'o' , '!'}; B. char b[10];b="Hello!"; C. char b[10];strcpy(b,"Hello!"); D. char b[10]="Hello!"; 22. 以下不能正确进行字符串赋初值的语句是() A. char str[5]="good!"; B. char str[]="good!"; C. char *str="good!"; D.char str[5]={'g', 'o', 'o', 'd'}; 34.下列字符串赋值语句中,不能正确把字符串C program赋给数组的语句是: 。 A)char a[]={‘C’,‘ ’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’ ,‘\0’}; B)char a[10]; strcpy(a2, “C program”); C)char a[10]; a= “C program”; D)char a[10]={ “C program”}; 3.下列选项中不正确的赋值或赋初值的方式是( )。 A.char str[10]; str="string"; B.char str[ ]="string"; C.char *p="string"; D.char *p; p="string"; 求答案,完整解释,总结一下到底什么样式正确的!!多谢! 展开
 我来答
赏宣澄白梅
2020-01-29 · TA获得超过3341个赞
知道大有可为答主
回答量:3084
采纳率:26%
帮助的人:476万
展开全部
17,
选B
理由:
b是地址常量,只能指向本身的内存空间,不可以指向字符串常量"Hello!"的首地址.
22,
选A
理由:
字符串是以'\0'结束的,
所以加上"good!"就是6个字节,
而数组的大小才是5,所以空间不够,
大小至少为6,
改为
char
str[6]="good!";或者
char
str[]="good!";都可以,后者根据字符串的字符个数自动匹配数组大小.
34,
选C
理由:
同17题.
3,
选A
理由:
同17题.
哥哥我给你总结如下:
关于字符数组的赋值问题,
首先数组名本身就是个指针,指向了数组的第一个元素的地址.另外数组名是个指针常量,或者叫地址常量,也就是当定义一个数组时,
数组名就指向了本身的地址空间,
是个常量,
不可以再指向别的地址.
故正确的赋值方式是:
char
str[6]
=
{'h',
'e',
'l',
'l',
'o'};
或者
char
str[]
=
{'h',
'e',
'l',
'l',
'o'};//数组大小会根据字符个数自动匹配
或者
char
str[6]
=
"hello";
或者
char
str[]
=
"hello";//数组大小会根据字符个数自动匹配
要注意的就是字符串是以'\0'结束的,不要忘记这个。
另外还可以通过字符串地址赋给指针变量的方式
例如:
char
*str
=
"hello";//定义时同时初始化
等价于如下写法,先定义,后赋值
char
*str;
str
=
"hello";
这种赋值方式就是把字符串常量"hello"的首地址赋给指针变量str。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式