表达式必须在C 中具有指针对象类型
Expression must have pointer-to-object type in C++
我试图事先查找它,但似乎没有用。我只是想发挥功能,显然在dotpropoduct下的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;
}
您的功能以半隆结束:
int dotProduct(int* parray1, int *parray2, int size);
因此仅使其成为声明。而且它在main()
函数内部也是错误的。下标运算符[]
已经进行了删除,因此不需要两次退出,应为:
array1[i] * array2[i]
最后,您的功能需要返回sum
,并且for
条件需要更改为:
for (int i = 0; i < size; i++)
您应该在主机中为arr1;
和arr2
分配的delete
。这是该功能的外观:
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;
}
相关文章:
- 为什么指针对象没有调用默认构造函数
- 如何访问双指针对象中的方法
- 如何使用智能指针对象执行成员函数指针
- 调用带有指针对象错误的指针变量
- 如何从模板类重载创建的指针对象上的运算符?
- C++指针对象的运算符重载
- 如何初始化数组指针对象
- 如何打印出唯一指针对象向量中的值(基于范围的循环)?C++
- C++指针对象差异
- 涉及继承,指针对象的交易以及何时进行的问题
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 字符指针对象和相应的字符数组元素比较
- 如何在 c++ 中克隆为弱指针对象
- 指针对象使用CPP中的指针表达式进行比较
- Visual Studio中智能指针对象的自定义视图
- 使用指针 /对象 /模板参数正确构成
- 如果我确定只有一个线程一次处理指针/对象,则C/C 仍应使用同步
- 如何将值分配给指针对象 c++
- 更改智能指针对象,然后访问它