【问题标题】:Error: expected primary-expression before ']' token in C++错误:C++ 中 ']' 标记之前的预期主表达式
【发布时间】:2019-11-23 17:26:00
【问题描述】:

我正在尝试使用矢量 c++98 创建类似于 string.find 的内容,但我无法修复此错误。 我已经简化了代码,只留下了错误。 如果我能就如何实现这一目标获得帮助。

#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];
    }
}

【问题讨论】:

  • 你要求start_line[]做什么?
  • 具有每个句子开头的字符的索引
  • 我猜你的意思是start_line[i]
  • find_line(start_line[],loc_key[i]); -> find_line(start_line,loc_key[i]);

标签: c++ function c++98


【解决方案1】:

你的两个功能

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]; - 我认为这样思考会更清楚。

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 2012-07-08
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2013-01-13
    • 2017-09-24
    相关资源
    最近更新 更多