char str[ ]="I am happy";
等价于
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y',' '};
而不与下面的等价
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};
说明:字符数组并不要求它的最后一个字符为' ',甚至可以不包含' ',向下面这样写是完全合法的。
char str[5]={'C','h','i','n','a'};
--------------------------------------------------------------------------------------
用字符指针指向一个字符串 char* str="I love China";( 自动给后面加 )
“C语言对字符串常量是按字符数组处理的”,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。而以为定义时把字符串常量"I love China"直接赋给该字符串变量是错误的。