CJW deeplearning , machine learning

C++ 字符数组与字符串的初始化

2016-01-23

1. 字符串常量与字符数组

  • "abc": 字符串常量,自带'\0'(字符串结束符)
  • {'a','b','c'}: 字符数组,没有'\0'

2. 字符数组与字符串的初始化

stringchar * 不能用字符数组初始化,没有字符串结束符,编译错误;可以用字符串常量初始化

  • 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'}, 没有编译错误, 但是没有结束符,长度问题和越界情况需要谨慎

Comments