请问输出的数组哪里出现了错误

输出的不是整型数组

#include
using namespace std;

int* MaxC(char* B, int length)
{
  int maxc[6];

  maxc[0]= NULL;//使maxc数组的数字的下标从1开始
  maxc[1] = 0;
  maxc[2] = 0;
  int i;//模式串数组B的下标
  int j = 3;//数组maxc的下标
  for (i = 3; i < length; i++)
  {
    int max_len = i - 2;

    int len;
    for (len = max_len; len > 0; len--)
    {
      int k = 1;//指向前缀的第一个字母,初始值
      int l = 2;//指向后缀的第一个字母,初始值

      for (k = 1; k <= len; k++)
      {
        if (B[k] == B[l])
        {
          l++;
        }
        else
        {
          break;//匹配失败,跳出循环
        }
      }

      if (k == len+1)
      {
        maxc[j] = len;
        break;
      }
    }

    if (len == 0)
    {
      maxc[j] = 0;
    }

    j++;
  }

  return maxc;
}

int main()
{
  char A[] = "ABTPDABDABDDABBE";//主串
  char B[] = " ABDD";//模式串

int lengthB=strlen(B);

cout<<"strlen(B)="<<lengthB;

int* maxc;
maxc=MaxC(B,lengthB);

return 0
}

img

你是希望maxc=MaxC(B,lengthB);得到一个正确的整型数组是吧?
在C和C++语言中,是不能把函数内定义的数组作为返回值的。MaxC函数返回后,其定义的局部变量int maxc[6]就被释放了,返回的是一个无意义的数组指针。
应该在main函数中定义好数组,然后作为参数传入MaxC函数中,在MaxC中对该数组进行赋值等操作。

这也没有打印maxc啊