尊旭网
当前位置: 尊旭网 > 知识 >

字符串赋值

时间:2024-02-22 22:47:37 编辑:阿旭

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

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。


字符串数组 赋值

分两种情况:
一.初始化:可采取下面的措施
char
s[20]="Hello
worle!";/*实际字符串不能大于19,因为C字符串的末尾会自动添加\0作为结束标记*/
2.char
s[]="Hello
worle!";/*C语言字符串的长度会根据实际长度加1(末尾的\0)*/
3.3.char
s[]={'l','i','h','u','a','s','h','a','n'};/*该字符串数组不会在任何地方添加\0*/
一般用前两种就行了。
二.手工赋值:可采取下面的措施
char
s[20];
scanf("%s",s);/*长度要小于19哦,不忽略空格,制表符,回车。
或gets(s);/*忽略格,制表符。以回车作为结束标记,但不检查数组越界*/
或fgets(s);/*忽略格,制表符。以回车作为结束标记,但检查数组越界*/
还有的就要用到库函数了,更多详细信息,参考我的博客,里面应该有你所要找的答案。
http://hi.baidu.com/lhs295988029