使用指针调用函数时出错

Getting an error when calling a function using pointer

本文关键字:出错 函数 调用 指针      更新时间:2023-10-16

所以我对C++还是很陌生的,并且已经做了一段时间的程序。我想我慢慢地得到了它,但在第36行第10列不断地得到一个错误"Intellisense:'*'的操作数必须是指针。"。我需要做些什么来修复这个错误?当我完成每一个函数时,我将转到其他函数,所以很抱歉有额外的函数声明

// This program will take input from the user and calculate the 
// average, median, and mode of the number of movies students see in a month.
#include <iostream>
using namespace std;
// Function prototypes
double median(int *, int);
int mode(int *, int);
int *makeArray(int);
void getMovieData(int *, int);
void selectionSort(int[], int);
double average(int *, int);
// variables
int surveyed;

int main()
{
    cout << "This program will give the average, median, and mode of the number of movies students see in a month" << endl;
    cout << "How many students were surveyed?" << endl;
    cin >> surveyed;
    int *array = new int[surveyed];
    for (int i = 0; i < surveyed; ++i)
    {
        cout << "How many movies did student " << i + 1 << " see?" << endl;
        cin >> array[i];
    }

    median(*array[surveyed], surveyed);
}

double median(int *array[], int num)
{
    if (num % 2 != 0)
    {
        int temp = ((num + 1) / 2) - 1;
        cout << "The median of the number of movies seen by the students is " << array[temp] << endl;
    }
    else
    {
        cout << "The median of the number of movies seen by the students is " << array[(num / 2) - 1] << " and " << array[num / 2] << endl;
    }
}

问题:

  1. 以下行中使用的表达式*array[surveyed]

    median(*array[surveyed], surveyed);
    

    是不对的。array[surveyed]是数组的第surveyed个元素。它不是指针。取消引用它是没有意义的。

  2. 声明中使用的median的第一个参数的类型与定义中使用的类型不同。这个宣言似乎是正确的。将实现更改为:

    double median(int *array, int num)
    
  3. 修复您呼叫median的方式。代替

    median(*array[surveyed], surveyed);
    

    使用

    median(array, surveyed);