这指针太多坑了吧,又被难倒了。

为什么这样定义的二维数组不行,要定义成*month[13]才能通过?这两个不都是一个意思吗?
img

定义二维没有问题啊,你哪里出问题了
我运行的就很正常

#include <stdio.h>
char list[13][5] = {"error","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

char* getMonth(int i) {
   if (1<=i && i <= 12) {
      return list[i];
   }
   return list[0];
}
 
int main(int argc, char const *argv[])
{
   printf("%s",getMonth(12));
   return 0;
}

你这个函数也怪晕的,整个循环干啥呢
if(n<1 || n>12)
return NULL;
return month[n];
不就完事了么

另外,这个月份英文数组,应该放到函数外部,否则你return month[n]后,这个month数组就被系统回收了啊,是个临时变量,外部用返回的char*是会出问题的