char 数组的初始化问题

#include <iostream>
#include <string.h>

using namespace std;

int main() {

// 一维数组
char str1[] = "ab"; cout << str1 << endl; // ab
char str2[] = {"ab"}; cout << str2 << endl; // ab
char str3[3] = "ab"; cout << str3 << endl; // ab
char str4[3] = {"ab"}; cout << str4 << endl; // ab
char str5[3] = {'a', 'b', 'c'}; cout << str5 << endl; // abc


// 二维数组
char str6[2][3] = {"ab", "cd"}; cout << *str6 << endl; // ab
char str7[][3] = {"ab", "cd"}; cout << *str7 << endl; // ab

cout << *str6+1 << endl; // b
cout << *str6+2 << endl; //
cout << *str6+3 << endl; // cd
cout << *str6+4 << endl; // d
cout << *str6+5 << endl; //

return 0;
}

str6是一个2维(行)数组。在每一行中,可以存放一个一个字符串,加上’\0’长度不能超过3,也可以是一个字符数组。因此,下面的初始化,也是正确的:

char str8[2][3] = {“ab”, {‘c’, ‘d’}};

运行结果如下:

char 数组的初始化问题_数组