Pointers 为什么下面的代码需要指针初始化?

Pointers 为什么下面的代码需要指针初始化?,pointers,constants,Pointers,Constants,当我在没有指针的情况下初始化以下数组时,收到以下错误消息: 错误:字符数组初始值设定项中的元素过多 为什么我需要用指针初始化这个数组 const char MONTH_NAME[] ={"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; #包括 使用名称空间std; 常量字符*月份名称[]={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”, “七月”、“八月”

当我在没有指针的情况下初始化以下数组时,收到以下错误消息:

错误:字符数组初始值设定项中的元素过多

为什么我需要用指针初始化这个数组

const char MONTH_NAME[] ={"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

#包括
使用名称空间std;
常量字符*月份名称[]={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
常量字符*GetOldMonthName(整数月){
如果(1在这种“非指针”形式中:

MONTH\u NAME
被声明为
const char
数组。
const char
数组(当被
'\0'
终止时)也被称为C样式字符串。但您正试图用“const char
数组数组”(即字符串数组)初始化此字符串.因此,这是一个错误

例如,初始化数组的第一个元素是
“Jan”
,它本身是一个
常量字符的数组(一个字符串)

在替代“指针”形式中:

MONTH\u NAME
被声明为指向
const char
的指针数组,该数组由代码中的const字符串列表正确初始化。因此,没有错误。

在这种“非指针”形式中:

MONTH\u NAME
被声明为
const char
数组。
const char
数组(当被
'\0'
终止时)也被称为C样式字符串。但您正试图用“const char
数组数组”(即字符串数组)初始化此字符串.因此,这是一个错误

例如,初始化数组的第一个元素是
“Jan”
,它本身是一个
常量字符的数组(一个字符串)

在替代“指针”形式中:

MONTH\u NAME
被声明为指向
const char
的指针数组,该数组由代码中的const字符串列表正确初始化。因此,没有错误

#include <iostream>
using namespace std;

 const char* MONTH_NAME[] ={"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

const char* GetOldMonthName(int month){
    if(1 <= month && month <= 12){
        return MONTH_NAME[month - 1];
    }
    return 0;
}

int main(){
    int month;

    cout << "Enter the month number." <<endl;
    cin  >> month;
    const char* name = GetOldMonthName(month);

    if(name == 0){
        cout << "That is not month." <<endl;
    }
    else{
        cout <<"The number is " << name << endl;
    }

    return 0;
}
const char MONTH_NAME[] ={"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
const char* MONTH_NAME[] ={"Jan", "Feb", "Mar", "Apr", "May", "Jun", 
 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};