【问题标题】:Expected primarly expression before ]? (C++)] 之前的预期主要表达? (C++)
【发布时间】:2018-11-27 17:54:31
【问题描述】:
error: expected primary-expression before ']' token
     calcNumbers(myArr[], type);
                       ^

不知道这意味着什么。主要问题似乎在 11 点,但我认为我有更多。另外如何改进代码?我是否在某处或某处放置了指针,我应该以某种方式对其进行更多构造还是将其应用于工作?

#include <iostream>

void calcNumbers(int arr[] ,int type);
int askNumbers();
int askType();

int main()
{
    int type = askType();
    int myArr = askNumbers();
    calcNumbers(myArr[], type);
}

int askType()
{
    int type_ = 0;

    std::cout << "1 for addition. 2 For subtraction. 3 for multiplication. 4 for division." << std::endl;
    std::cin >> type_;

    return type_;
}

int askNumbers()
{
    int arr[] = {};

    std::cout << "Enter as many numbers you'd like. Type 0 to stop." << std::endl;
    int i = 0;

    do
    {
        std::cin >> arr[i];
        i++;
    }

    while(arr[i] != 0);
    return arr[];
}

void calcNumbers(int arr[] , int _type)
{
    int arrSize = (int)( sizeof(arr));
    int totalNumber = 0;

    for(int i = 0; i < arrSize; i++)
    {
        if (_type == 1)
            totalNumber += arr[i];
        else if (_type == 2)
            totalNumber -= arr[i];
        else if (_type == 3)
            totalNumber *= arr[i];
        else if (_type == 4)
            totalNumber /= arr[i];
    }
    std::cout << totalNumber << std::endl;
}

提前感谢,我真的无法解决这个奇怪的问题......

【问题讨论】:

  • 你希望calcNumbers(myArr[], type); 做什么?
  • 请只标记使用的语言。
  • 请问这里的错误信息是什么?
  • 错误信息在标题中
  • @Aspect 不,他们不是。 C++ 起源于 C,但从那时起它们就分道扬镳了

标签: c++ type-conversion int


【解决方案1】:

错误消息告诉您,在您的代码中的某个点需要一个表达式:

calcNumbers(myArr[此处缺少表达式 ], type);

这是为什么呢?因为operator[] 接受一个参数(传统上是一个索引),如myArr[1]。没有参数,没有编译。

请注意,当您使用 myArr 时会发生此错误。在声明中使用[] 的其他地方,在这些地方它被接受,因为它是类型的一部分。如果您有一个数组并且想要将整个数组作为参数传递,请仅使用变量名,如calcNumbers(myArr, type);。 (这会假设myArr 是一个数组,即使它不在您的代码中。您将myArr 声明为int 类型。)

再一次,您的代码在数组使用方面存在许多问题(例如,askNumbers 中的索引缺少界限)。您可能想找到一个好的tutorial on array usage in C++。或者看了vector - C++ Reference或者std::vector - cppreference.com之后看能不能用std::vector

【讨论】:

  • 非常感谢。我发现数组有点混乱,但你的清除了一些部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
相关资源
最近更新 更多