先来一个问题,你知道一下字符数组定义的区别嘛?
char ch[5] = "hello";//1
char ch[6] = "hello";//2
char ch[6] = {"hello"};//3
char ch[5] = { 'h','e','l','l','o' };//4
char ch[6] = { 'h','e','l','l','o' };//5
首先第1、2、3种都是以字符串常量初始化字符数组,但是第1种编译器会报错,由于c++的字符串以‘\0’结尾,相当于下面这样,超过数组长度当然报错。第2、3中实际作用是一样的。
char ch[5] = { 'h','e','l','l','o','\0' };
第4、5种是以字符常量初始化字符数组,两者的区别在于后者会以‘\0’结尾而前者不会,因为后者实际初始化的元素只有5个。
敲剑指offer里面的面试题12得来的教训,找了一晚上bug,问题居然出在我测试时定义的数组上,蠢死吧。感谢博文