我尝试使用指针和模块的矢量。 我有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++){
cout<<"Ingrese numero: ";
cin>>vec[i];
}
cout<<FUN(*punteroV) << endl;
return 0;
}
并在模块中:
#include "Funcion1.hpp"
#include<iostream>
using namespace std;
int FUN(int &punteroV){
int num;
for(int i = 0;i<10;i++){
for(int j = 0;j<10;j++){
cout<<"i: "<<(punteroV+ i)<<endl<<"j: "<<(punteroV + j)<<endl;
if(*(punteroV + i) > *(punteroV + j)){
num = (punteroV + i);
}
}
}
return num;
}
并在模块中.hpp
#ifndef FUNCION1_H
#define FUNCION1_H
int FUN(int&);
#endif
编译器产生错误:
error invalid type argument of unary '*' (have 'int')
这个错误意味着什么?
答案 0 :(得分:0)
在功能FUN中你有这一行:
if(*(punteroV + i) > *(punteroV + j))
你试图对一个整数的引用做指针运算,然后像int*
那样对它进行推理你不能直接对引用这样做。要对引用进行数学运算,您必须首先采用如下地址:
if(*(&punteroV + i) > *(&punteroV + j)){