位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 字符数组的整体初始化

提问人:刘团圆发布时间:2020-11-30

字符串设置了结束标志以后,对字符数组的初始化,就可以用字符串常量来初始化字符数组。

    例如:

    char strl[15] = {"Hello boy"};

    或

    char strl[20] ="Hello boy";

    等价于:

    char strl[20] ={'H','e','l','1','0',' ','b','o','y','\0'};

很明显,以字符串形式初始化更简洁一些。

此时数组stri在内存中的存储形式如图所示。

H

e

i

i

0


b

o

y

\0

\0

\0

\0

\0

\0

\0

    从上图可看出,str1[9]中存储的是字符'\0',因为这是一个字符串结束标记,所以C语言所有的字符串处理函数完全忽略'\0'之后数组空间中存放的内容。

    从上图可看出,字符串结束标志也要在字符数组中占用一个元素的存储空间,因此在声明字符数组长度时,至少为字符串所需长度加1。

    字符串与字符数组的区别就在于是否存在字符串结束标记'\0',例如:

    char s1[]="hello";

    char s2[5]={'h','e','l','l','o'};

    S1和S2中存储的都是相同的内存。但对于S1,系统会自动在末尾增加一个'\0',所以在内存中所占的空间为6个字节。而S2所占空间就是它定义时的长度,5个字节。

    字符数组使用字符串初始化时也可省略“元素个数”。例如:

    char strl[]="Hello boy";

这样会根据初始化字符串的个数确定str1在内存中所占的空间,因为'\0'也占1个字节,所以str1在内存中所占空间为10个字节。


继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部