表达式必须在C ++中具有指向对象的类型

时间:2018-02-16 01:14:53

标签: c++

我事先尝试过这样做,似乎没有任何效果。我只是想创建一个函数,并且在dotProduct下有明显的int i错误。有人知道为什么会这样吗? `

 #include <iostream>
 #include <string>
 using namespace std;

int main()
{
    int inp,i,v,array1,array2,oo,test1;
    // Checking the input of the array size
    do {
        cout << "Enter Array size: ";
        cin >> inp;
        if (inp <= 0)
            cout << "Incorrect array size. Try Again \n";
    } while (inp <= 0);
    int *arr1;
    int *arr2;
    arr1 = new int[inp];
    arr2 = new int[inp];
    // Populating the arrays
    cout << "-----Begin Entering Array Elements-------- \n";
    cout << "Array 1: \n";
    for (i = 0; i <= (inp - 1); i++)
    {
        cout << "Enter element: ";
        cin >> v;
        arr1[i] = v;
    }
    cout << "Array 2: \n";
    for (i = 0; i <= (inp - 1); i++)
    {
        cout << "Enter element: ";
        cin >> v;
        arr2[i] = v;
    }
    // The dot product function
    int dotProduct(int *array1, int *array2, int size);
    {
        int sum = 0;
        for (int i = 0; i <= (inp - 1); i++)
        {
            oo = ((*array1[i]) * (*array2[i]));
            sum = sum + oo;
        }
    }
    test1 = dotProduct(arr1, arr2, inp);
    cin.get();
    cin.ignore();
    return 0;
}

1 个答案:

答案 0 :(得分:3)

您的功能以分号结束:

int dotProduct(int* parray1, int *parray2, int size);

因此仅作为声明。它在main()函数内部也是错误的。下标运算符[]已经进行解除引用,因此无需解除引用两次,应该是:

array1[i] * array2[i]

最后,您的函数需要返回sumfor条件需要更改为:

for (int i = 0; i < size; i++)

你应该delete为你的主要内容分配给arr1;arr2的内存。以下是该函数的外观:

int dotProduct(int *array1, int *array2, int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += array1[i] * array2[i];
    }
    return sum;
}