我有以下 C++ 代码:
#include <iostream>
using namespace std;
int main(){
}
int findH(int positionH[]){
return positionH; //error happens here.
}
编译器抛出错误:
invalid conversion from `int*' to `int'
这个错误是什么意思?
我有以下 C++ 代码:
#include <iostream>
using namespace std;
int main(){
}
int findH(int positionH[]){
return positionH; //error happens here.
}
编译器抛出错误:
invalid conversion from `int*' to `int'
这个错误是什么意思?
positionH[]
是一个数组,它的返回类型是int
.
编译器不会让你这样做。将参数设为 int:
int findH(int positionH){
return positionH;
}
或者使返回类型成为一个指向 int 的指针:
int* findH(int positionH[]){
return positionH;
}
或者在返回之前将数组转换为整数:
int findH(int positionH[]){
return positionH[0];
}
此行是无效的 C++(并且也是无效的 C,您的代码似乎是用它编写的):
int bla[2] = findH(field, positionH);
bla 是一个由 2 个元素组成的数组,不能以这种方式初始化。findH 返回整数。
在您尝试执行以下操作时出现此错误:
int *p =10;
这意味着您正在int
为 pointertoint 赋值*p
。
*p
但是指针是存储地址,这意味着10
作为地址。
所以就这样做:
int i=10;
int *p=&i;
或者
p=&i;
它不会给出任何错误。
错误是因为您返回了一个指针而编译器需要一个 int。
int * 和 int 之间有很大的区别。
还有你为什么要返回positionH,数组是通过引用传递的,不需要返回它。
更好的代码将是
void option1(char** field, int[])
{
int findH(char **, int[]);
int positionH[2];
findH(field, positionH);
//positionH passed by reference, no need to return it
}
void findH(char **field, int positionH[])
{
for(int n = 0;n < 14 ; n++)
{
for(int m = 0; m < 14; m++)
{
if(field[m][n] == 'H')
{
positionH[0] = n;
positionH[1] = m;
}
}
}
}