错误:C ++中']'标记之前的预期主表达式

时间:2019-11-23 17:26:00

标签: c++ function c++98

我正在尝试使用向量string.find创建类似于c++98的东西,但是我无法解决此错误。 我简化了代码,只留下了错误。 如果我能获得实现此目标的帮助。

#include <iostream>
#define MAX 99999
using namespace std;

int free_pos (int v[]);
int find_line (int v[], int pos);

int main() {
   char text[MAX];
   int loc_key[MAX],start_line[MAX]; //

   for(int i=0; i<free_pos(loc_key);i++) {
       cout << "Line: " << i+1;
       int pos = find_line(start_line[],loc_key[i]); //Here is the error
       for(int j=start_line[pos];j<start_line[pos+1];j++) {
            cout<<text[j];
       }
       cout<<endl;
   }
   return 0;
}

int free_pos (int v[]) {
    for(int i=0;i<MAX;i++){
        if(v[i] == 0)
            return i;
    }
    return 99;
}

int find_line (int v[], int pos) {
    for(int i=0; i<free_pos(v); i++) {
        if(v[i]==pos)
            return v[i];
        if(v[i]< pos)
            return v[i-1];
    }
}

1 个答案:

答案 0 :(得分:3)

您的两个功能

int free_pos (int v[]);
int find_line (int v[], int pos);

将数组作为输入,但是随后您尝试调用int pos = find_line(start_line[],loc_key[i]);,它应仅使用数组名称 ,因为该名称被程序称为数组。如果您按照以下方式编写这两个函数,您会更容易(我认为):

int free_pos (int* v);
int find_line (int* v, int pos);

它们的功能与您的函数相同,但是您可以看到它们的参数是:int指针(array)和int。然后,调用该函数仅需要一个int指针(在您的情况下为start_line)和一个整数loc_key[i]。如果您仍然无法理解它,则可以阅读有关数组的动态内存分配的信息,该操作可以通过以下方式完成:int* arr; arr = new int[your_size];-我认为这样做很清楚。