首页 百科知识 一维数组初始化长度大于数组长度

一维数组初始化长度大于数组长度

时间:2022-10-17 百科知识 版权反馈
【摘要】:注意:前面的word1和word2都是字符数组,但由于赋初值的方式不同,因此它们的大小是不同。这是由于C语言会自动在字符串的结尾添加一个终止符'\0',因此word2中的字符数为4,而数组长度为5。这条语句与前面对word2的定义是等价的。当然,在使用字符数组时,也必须注意它的下标越界的问题。比如下面的程序就可能在运行中产生错误,但系统并不会提示这个错误。

4.3.1 字符数组的定义和初始化

字符数组也是数组,它的定义、初始化及使用均与普通数组相同。

定义并初始化字符数组有两种方法。

(1)用字符为字符数组赋初值

例如下面语句

  char word1[4]={'t','r','e','e'};

定义了一个长度为4的字符数组word1,其下标变量对应的值如图4.3.1所示。

img352

图4.3.1 word1数组

(2)用字符串常量为字符数组赋初值

例如下面语句

  char word2[5]="tree";

定义了一个长度为5的字符数组word2,其下标变量对应的值如图4.3.2所示。

img353

图4.3.2 word2数组

注意:前面的word1和word2都是字符数组,但由于赋初值的方式不同,因此它们的大小是不同。这是由于C语言会自动在字符串的结尾添加一个终止符'\0',因此word2中的字符数为4,而数组长度为5。

在用字符串初始化字符数组时,如果在定义时字符数组的最大字符数比初始化的字符个数大,则在内存中自动为多余的元素赋初值'\0'。例如:

  char word3[10]= "tree";

对应的字符数组word3如图4.3.3所示。

img354

图4.3.3 word3数组

如果初始化时,字符数组的长度小于或等于字符串的字符数,则会产生错误。为避免这种错误,可用下面方式定义:

  char word4[]="tree";

这种方式省略了数组的长度,C语句会根据初始化字符串的长度自动补上数组的长度,比如word4的长度即为5。这条语句与前面对word2的定义是等价的。

当然,在使用字符数组时,也必须注意它的下标越界的问题。比如下面的程序就可能在运行中产生错误,但系统并不会提示这个错误。

img355

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈