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

2025-03-19 07:36:26
推荐回答(1个)
回答1:

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。