C++ 错误一元';的无效类型参数*';(具有';int';)和模块
我尝试使用带有指针和模块的向量。 我对c++有这个问题: 在main.cpp中:C++ 错误一元';的无效类型参数*';(具有';int';)和模块,c++,pointers,module,C++,Pointers,Module,我尝试使用带有指针和模块的向量。 我对c++有这个问题: 在main.cpp中: #include<iostream> using namespace std; #include "Funcion1.hpp" int main (int argc, char *argv[]) { int vec[20]; int *punteroV = &vec[0]; for(int i = 0;i < 10;i++){
#include<iostream>
using namespace std;
#include "Funcion1.hpp"
int main (int argc, char *argv[]) {
int vec[20];
int *punteroV = &vec[0];
for(int i = 0;i < 10;i++){
cout<<"Ingrese numero: ";
cin>>vec[i];
}
cout<<FUN(*punteroV) << endl;
return 0;
}
编译器生成一个错误:
error invalid type argument of unary '*' (have 'int')
此错误的含义是什么?在FUN函数中,您有以下行:
if(*(punteroV + i) > *(punteroV + j))
您试图对一个整数的引用执行指针算术,然后像对待int*
一样对待它。您不能直接对该引用执行该操作。要对引用进行计算,您必须首先将其地址如下所示:
if(*(&punteroV + i) > *(&punteroV + j)){
这意味着
punterOv+i
是int
,而不是指针。的可能重复项是int*punterOv=&vec[0]中的指针
@SantiagoSantosisma这是一个不同的punterOv
变量,而这不是错误消息所指向的那一行。你在main()
中的指针与int
在FUN
()中被称为punterOv
的的int
完全无关,所以punterOv+i
,在FUN
()中,是一个int
。查看C++书中的章节,解释引用是什么,以及如何使用它们。
if(*(punteroV + i) > *(punteroV + j))
if(*(&punteroV + i) > *(&punteroV + j)){