C语言: 字符串结束符 ‘ \0 ’

1、本质

        '\0'是字符串结束标志,不计入串长,但要占内存空间。        

        '\0'是一个ASCII控制字符,是转义字符。意思是告诉编译器,这不是字符0,而是空字符。空字符\0对应的二进制为0000 0000,而数字0的二进制为0011 0000。

2、说明

        (1) 任何字符串之后都会自动加上'\0',由C编译系统自动加上。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。

        把一个字符串赋值给数组:char zf[]={"abcdef"};
        实际上数组str1在内存中的实际存放情况为: 
                                                a b c d e f  '\0' 
        把字符数组zf中的字符串拷贝到另一个字符数组中。字符串结束标志'\0'也一同拷贝。

        (2)如果字符串末尾少了‘\0’转义字符,则其在输出时可能会出现乱码问题。

3、注意

        (1)这个'\0'是占一个位置的,所以如果一个长度为10的字符串要放在一个字符串数组里面的话,这个字符串数组长度至少为11。

        (2)当数组长度不够时,指定了数组长度且赋值的字符串(没有人工输入'\0')长度大于等于数组长度,后面的信息会丢失。

        如:

                char zf[6]={"abcdef"};
        由于字符组zf的长度为6,所以后面的信息会丢失,即'\0'丢失。

        (3)如果在给数组赋值时,把每个字符单独用引号括起来。也会丢失'\0'。

        如:
                 char zf[]={'a','b','d','d','e','f'};

4、用法

若要让数组以'\0'结束,则可

        (1) 字符串赋值

        char zf[]={"abcdef"}; 

        (2)手动添加

        char zf[]={''a','b','d','d','e','f','\0'}; 

        (3) 数组长度大一点

        char zf[7]={'a','b','d','d','e','f'}; 

你可能感兴趣的:(C语言,c语言)