字符串与字符数组

来源:互联网 发布:ps软件错误16 编辑:程序博客网 时间:2024/05/16 01:21
因为字符串常量"I am happy"的最后由系统自动加上一个'\0'

因此,上面的初始化与下面的初始化等价

char str[ ]={'I',' ','a','m',' ','h','a','p','p','y','\0'};

而不与下面的等价

char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};

前者的长度是11,后者的长度是10.

说明:字符数组并不要求它的最后一个字符为'\0',甚至可以不包含'\0',向下面这样写是完全合法的。

char str[5]={'C','h','i','n','a'};

++++++++

可见,用两种不同方法初始化字符数组后得到的数组长度是不同的

#include <stdio.h>

void main(void)
{
char c1[]={'I',' ','a','m',' ','h','a','p','p','y'};
char c2[]="I am happy";
int i1=sizeof(c1);
int i2=sizeof(c2);
printf("%d\n",i1);
printf("%d\n",i2);

}

结果:10   11