1. 字符串常量与字符数组
"abc"
: 字符串常量,自带'\0'
(字符串结束符){'a','b','c'}
: 字符数组,没有'\0'
2. 字符数组与字符串的初始化
string
和 char *
不能用字符数组初始化,没有字符串结束符,编译错误;可以用字符串常量初始化
string a = "abc"
,正确char * b = "abc"
,正确char a[] = "abc"
,正确char a[] = {'a','b','c'}
, 没有编译错误,但是没有结束符,长度不能控制,无法正常获取该变量, 可以改为char a[] = {'a', 'b', 'c', '\0'}
;
3. 定长字符数组初始化,char a[3]
char a[4]="abc"
, 正确,有结束符,字符数组没有越界;char a[3]= "abc"
, 错误,初始化字符串太长,越界;加上结束符该常量有4位,越界char a[4] = {'a', 'b', 'c', '\0'}
, 正确char a[6] ={'a', 'b', 'c'}
, 正确,后面几位空缺自动补上 ‘\0’,正常结束char a[3] = {'a', 'b', 'c'}
, 没有编译错误, 但是没有结束符,长度问题和越界情况需要谨慎