5

我有以下 C++ 代码:

#include <iostream>
using namespace std;
int main(){
}
int findH(int positionH[]){
    return positionH;         //error happens here.
}

编译器抛出错误:

invalid conversion from `int*' to `int'

这个错误是什么意思?

4

4 回答 4

6

positionH[]是一个数组,它的返回类型是int.

编译器不会让你这样做。将参数设为 int:

int findH(int positionH){
    return positionH;        
}

或者使返回类型成为一个指向 int 的指针:

int* findH(int positionH[]){
    return positionH;        
}

或者在返回之前将数组转换为整数:

int findH(int positionH[]){
    return positionH[0];
}
于 2012-12-04T15:22:56.067 回答
2

此行是无效的 C++(并且也是无效的 C,您的代码似乎是用它编写的):

int bla[2] = findH(field, positionH);

bla 是一个由 2 个元素组成的数组,不能以这种方式初始化。findH 返回整数。

于 2012-12-04T15:45:32.413 回答
2

在您尝试执行以下操作时出现此错误:

int *p =10;

这意味着您正在int为 pointertoint 赋值*p

*p但是指针是存储地址,这意味着10作为地址。

所以就这样做:

int i=10;
int *p=&i;

或者

p=&i;

它不会给出任何错误。

于 2019-05-21T07:51:44.523 回答
0

错误是因为您返回了一个指针而编译器需要一个 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;

        }
         }
    }

}
于 2012-12-04T15:23:50.517 回答