4.3.1 字符数组的定义和初始化
字符数组也是数组,它的定义、初始化及使用均与普通数组相同。
定义并初始化字符数组有两种方法。
(1)用字符为字符数组赋初值
例如下面语句
char word1[4]={'t','r','e','e'};
定义了一个长度为4的字符数组word1,其下标变量对应的值如图4.3.1所示。
图4.3.1 word1数组
(2)用字符串常量为字符数组赋初值
例如下面语句
char word2[5]="tree";
定义了一个长度为5的字符数组word2,其下标变量对应的值如图4.3.2所示。
图4.3.2 word2数组
注意:前面的word1和word2都是字符数组,但由于赋初值的方式不同,因此它们的大小是不同。这是由于C语言会自动在字符串的结尾添加一个终止符'\0',因此word2中的字符数为4,而数组长度为5。
在用字符串初始化字符数组时,如果在定义时字符数组的最大字符数比初始化的字符个数大,则在内存中自动为多余的元素赋初值'\0'。例如:
char word3[10]= "tree";
对应的字符数组word3如图4.3.3所示。
图4.3.3 word3数组
如果初始化时,字符数组的长度小于或等于字符串的字符数,则会产生错误。为避免这种错误,可用下面方式定义:
char word4[]="tree";
这种方式省略了数组的长度,C语句会根据初始化字符串的长度自动补上数组的长度,比如word4的长度即为5。这条语句与前面对word2的定义是等价的。
当然,在使用字符数组时,也必须注意它的下标越界的问题。比如下面的程序就可能在运行中产生错误,但系统并不会提示这个错误。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。