c++填坑之字符数组

    技术2022-07-11  88

    先来一个问题,你知道一下字符数组定义的区别嘛?

    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,问题居然出在我测试时定义的数组上,蠢死吧。感谢博文

    Processed: 0.011, SQL: 9