Ha593 2022-06-23 23:38 采纳率: 95.2%
浏览 27
已结题

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

输出的不是整型数组

#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

  • 写回答

2条回答 默认 最新

  • wwc2017 2022-06-24 13:51
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月2日
  • 已采纳回答 6月24日
  • 创建了问题 6月23日